Как стать автором
Обновить
23
0

Пользователь

Отправить сообщение

«Алгоритмы: построение и анализ», «Искусственный интеллект: современный подход» и другие книги по свободной цене

Время на прочтение3 мин
Количество просмотров63K
Недавно ребята из books.ru в очередной раз пополнили раздел электронных книг, предлагаемых по свободной цене. Акция продажи новых электронных изданий будет идти до 1 июня (судя по опыту прошлых акций свободная цена на некоторые книги сохранится и в будущем).

Но в любом случае, я бы не стал писать этот пост, если бы не увидел, что коллекция пополнилась настоящими бриллиантами. «Алгоритмы: построение и анализ (CLRS), 2-е издание» (Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн) (читал эту книгу в печатном варианте и могу сказать, что перевод просто отменный). Искусственный интеллект: современный подход (AIMA-2), 2-е издание (Стюарт Рассел, Питер Норвиг).

С момента первого анонса о свободной цене в раздел добавились книги Нильсена, Брукса, Фаулера, Прата, Степанова, Спольски, Физерса, Александреску и др. Под катом находятся около 40 новых книг, которые больше всего заслуживают внимания (спрятаны под спойлер).
Читать дальше →
Всего голосов 56: ↑53 и ↓3+50
Комментарии34

Вызов функции, соответствующей заданной строке

Время на прочтение14 мин
Количество просмотров15K
Привет!
Не знал, как поточнее назвать статью, но хотелось бы разобрать одну маленькую задачку, которая звучит следующим образом:
На вход подаётся отформатированная некоторым образом строка, в которой указаны имя функции, её аргументы и типы аргументов. Нужно иметь возможность вызвать соответствующий обработчик функции, корректно передав все аргументы.

Например, так ActionScript пытается вызвать функцию test с тремя аргументами str, false, 1.0(соответственно типы аргументов: String, Boolean, Number):
<invoke name="test" returntype="xml"><arguments><string>str</string><false/><number>1.0</number></arguments></invoke>

Хотелось бы, чтобы со стороны C++ была вызвана соответствующая функция:
void test_handler(const std::wstring& str, bool flag, double n);


Под катом — реализация с использованием нового стандарта и, для сравнения, реализация с использованием старого стандарта(и капельки boost-а).
Читать дальше →
Всего голосов 32: ↑25 и ↓7+18
Комментарии12

How-to: Торговля фьючерсами на фондовом рынке

Время на прочтение7 мин
Количество просмотров55K
image

Не так давно в нашем блоге был опубликован топик, посвященный фьючерсным контрактам на фондовом рынке. Он вызвал определенный интерес публики, однако многие хабрапользователи не удовлетворились упрощенной теорией и стали задавать более глубокие практические вопросы. Мы не можем оставить их без ответа, поэтому сегодня публикуем материал, с углубленным описанием торговли фьючерсами.
Читать дальше →
Всего голосов 32: ↑21 и ↓11+10
Комментарии5

Видеозаписи докладов конференции AI&BigData Lab

Время на прочтение2 мин
Количество просмотров10K


Команда проекта GeeksLab 12 апреля 2014 года в Одессе провела конференцию «Al&BigData Lab», которая была посвящена большим данным и искусственному интеллекту.

Презентации и видеозаписи докладов под катом.
Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии2

Обращение не ASCII-строки

Время на прочтение3 мин
Количество просмотров18K
Если вы знаете, что такое ICU, то, вероятно, вы не узнаете из этого поста ничего нового.

    Порой приходится слышать от товарищей, что на собеседовании их просили написать код, который бы обращал строку. И даже в Cracking the Coding Interview это второй вопрос в тестах. Однако, правильное, с моей точки зрения, решение выходит далеко за рамки библиотечного вызова или одного цикла while.
Читать дальше →
Всего голосов 42: ↑35 и ↓7+28
Комментарии28

Организация многозадачности в ядре ОС

Время на прочтение22 мин
Количество просмотров78K
Волею судеб мне довелось разбираться с организацией многозадачности, точнее псевдо-многозадачности, поскольку задачи делят время на одном ядре процессора. Я уже несколько раз встречала на хабре статьи по данной теме, и мне показалось, что данная тема сообществу интересна, поэтому я позволю себе внести свою скромную лепту в освещение данного вопроса.
Сначала я попытаюсь рассказать о типах многозадачности (кооперативной и вытесняющей). Затем перейду к принципам планирования для вытесняющей многозадачности. Рассказ рассчитан скорее на начинающего читателя, который хочет разобраться, как работает многозадачность на уровне ядра ОС. Но поскольку все будет сопровождаться примерами, которые можно скомпилировать, запустить, и с которыми при желании можно поиграться, то, возможно, статья заинтересует и тех, кто уже знаком с теорией, но никогда не пробовал планировщик “на вкус”. Кому лень читать, может сразу перейти к изучению кода, поскольку код примеров будет взят из нашего проекта.
Ну, и многопоточные котики для привлечения внимания.

Читать дальше →
Всего голосов 92: ↑92 и ↓0+92
Комментарии19

Почему нам необходима рефлексия в C++1y

Время на прочтение4 мин
Количество просмотров17K
Программам необходимы данные. Программы выдают лишь настолько хороший результат работы, насколько полны и валидны были входные данные. Для некоторых программ входными данными являются обычные файлы или полученная из сети информация (пример — ваш браузер). Другие программы оперируют исходными кодами. Эти вторые «мета-программы» тоже нуждаются в данных. Чем они будут качественнее — тем качественнее будет и результат.

Что же за данные мы «скармливаем» таким программам? Ну, в С++ более важным чем «что?» является вопрос «когда?» (помните Морфеуса?). Программа на С++ это всего-лишь последовательность битов, которые компилятор пытается прочитать и понять. И вот в процессе этого «понимания» компилятор преобразует код на С++ в машинные инструкции и (что особенно интересно!) выполняет некоторую часть кода вашей программы. Да, мы говорим о мета-программировании на этапе компиляции.

Возвращаемся к вопросу «что?». Мы хотим иметь доступ ко всем сущностям, которые только теоретически могут быть доступны на этапе компиляции: типы, члены классов, функции, аргументы, пространства имён, номера строк кода, имена файлов — и всё это хорошо бы иметь в «чистом виде», без каких-либо странных препроцессорных хаков или использования сторонних утилит. Кроме того, хорошо бы получить и менее очевидные вещи: информацию о конвертируемости одних типов в другие, отношениям наследования и агрегации, дружественных классах и функциях и т.д.

Компилятор языка С++ уже имеет всю эту информацию! Но, к сожалению, не в доступной для мета-программирования форме. Получается странная такая ситуация — мы можем выполнить кое-какой код на этапе компиляции — но вот большинства данных у нас нет. Ну и здесь было бы логично задаться вопросом «А как же мы можем эти данные получить?».
Читать дальше →
Всего голосов 37: ↑31 и ↓6+25
Комментарии73

JSR 133 (Java Memory Model) FAQ (перевод)

Время на прочтение25 мин
Количество просмотров148K
Добрый день.
В рамках набора на курс «Multicore programming in Java» я делаю серию переводов классических статей по многопоточности в Java. Всякое изучение многопоточности должно начинаться с введения в модель памяти Java (New JMM), основным источником от авторов модели является «The Java Memory Model» home page, где для старта предлагается ознакомится с JSR 133 (Java Memory Model) FAQ. Вот с перевода этой статьи я и решил начать серию.
Я позволил себе несколько вставок «от себя», которые, по моему мнению, проясняют ситуацию.
Я являюсь специалистом по Java и многопоточности, а не филологом или переводчиком, посему допускаю определенные вольности или переформулировки при переводе. В случае, если Вы предложите лучший вариант — с удовольствием сделаю правку.
Этот статья также подходит в качестве учебного материала к лекции «Лекция #5.2: JMM (volatile, final, synchronized)».

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Ну и да, приходите учиться ко мне!


JSR 133 (Java Memory Model) FAQ


Jeremy Manson и Brian Goetz, февраль 2004

Содержание:
Что такое модель памяти, в конце концов?
Другие языки, такие как C++, имеют модель памяти?
Что такое JSR 133?
Что подразумевается под «переупорядочением» (reordering)?
Что было не так со старой моделью памяти?
Что вы подразумеваете под «некорректно синхронизированы»?
Что делает синхронизация?
Как может случиться, что финальная поля меняют значения?
How do final fields work under the new JMM?
Что делает volatile?
Решила ли новая модель памяти «double-checked locking» проблему?
Что если я пишу виртуальную машину?
Почему я должен беспокоиться?
Читать дальше →
Всего голосов 56: ↑51 и ↓5+46
Комментарии32

Yota стала сотовым оператором (и что такое «файл большого объёма»?)

Время на прочтение2 мин
Количество просмотров112K
Анонс этого события под громким заголовком «Четвертый федеральный оператор» висит сейчас у них на сайте: www.yota.ru/voice



Услуги телефонии «Йота» предоставляет на базе «Мегафона», которым была приобретена в прошлом году.

Особенность предложения — фиксированная цена, «100% безлимитный интернет», безлимитные SMS, 300 минут звонков по России и отсутствие роуминга внутри страны. Похоже на идеальное предложение, потому что современному юзеру безлимитный интернет куда важнее безлимитных звонков, мода на которые уходит в прошлое.
Читать дальше →
Всего голосов 90: ↑80 и ↓10+70
Комментарии190

Охотники на волков с Wall Street. Часть 2

Время на прочтение5 мин
Количество просмотров23K

Изображение: Razvan Chisu — Unsplash

Это — продолжение рассказа о новинке от знаменитого Майкла Льюиса — автора «Высокочастотной революции на Уолл-стрит». Майкл знаком нашей аудитории по фильму «Moneyball» или «Человек, который изменил всё». Его книга 2003 года легла в основу этой кинокартины, но с тех пор вышел целый спектр изданий, в которых Льюис анализирует устройство финансового рынка. Об одном из них мы говорим в нашем очередном хабратопике — разбираем и адаптируем для вас главное из небольшого отрывка, плюс обсуждаем HFT-трейдинг в целом.
Читать дальше →
Всего голосов 47: ↑38 и ↓9+29
Комментарии4

Brainstorage и Хантим объединяются в один проект

Время на прочтение4 мин
Количество просмотров39K
Всем привет! Как вы помните, недавно мы существенно обновили возможности нашей фриланс-биржи Freelansim. Теперь же спешим поделиться ещё одной новостью – мы не обошли вниманием и тех, кто ищет постоянную работу (или постоянного сотрудника).



Наша социальная сеть для IT-специалистов «Brainstorage» получила большое обновление, над которым мы работали последние месяцы. Итак, встречайте «Brainstorage 2.0».
Читать дальше →
Всего голосов 107: ↑96 и ↓11+85
Комментарии43

Часть первая, а вторую часть всё равно никто не читает

Время на прочтение5 мин
Количество просмотров33K

О чем собственно речь


Как-то раз одним поздним декабрьским вечером завершился сбор материала для хабра-статьи, посвященной SAT. Материала оказалось слишком много и передо мной встал выбор: разделить статью на две части или собрать весь материал вместе в одной статье. Выбор был сделан в пользу разделения на части (первая и вторая). К моему удивлению, вторая часть получила значительно меньше внимания, чем первая — фактически её прочитали в два раза меньше человек.

Время шло, и я стал замечать, что это происходило не только с моими статьями, но и со многими другими статьями в нескольких частях. Тогда у меня возник вопрос, а верно ли в общем, что вторая часть получает меньше внимания (просмотров, плюсов, и записей избранного)?

(сделано на основе хабра-статьи Как лгать с помощью статистики)

Структура статьи
  1. О чем собственно речь
  2. Данные
  3. Сравниваем части
  4. Серии статей
  5. Заключение
  6. Дальнейшее чтение

Читать дальше →
Всего голосов 69: ↑62 и ↓7+55
Комментарии31

1000+ часов видео по Java на русском

Время на прочтение7 мин
Количество просмотров1.3M
Добрый день.
Меня зовут Головач Иван, я руковожу небольшой образовательной компанией и преподаю сам:
  1. Java Core
  2. Junior Java Developer: Servlet API, JDBC, Maven, JUnit, Mockito, Log4J, основы Spring/SpringMVC, основы JPA/Hibernate, шаблоны/архитектуры MVC/IoC/DAO.
  3. Multicore programming in Java.


Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

В следствии этого у меня скопилось значительно количество ссылок на видео на русском языке по Java как моего авторства, так и моих коллег.

(GolovachCourses.com)


Здесь собраны несколько вариантов записи моего курса Java Core.
Модуль #1 (Procedural Java):
Набор июль 2013: #1, #2, #3, #4
Набор апрель 2013: #1, #2, #3, #4
Набор февраль 2013: #1, #2, #3, #4
Набор январь 2013: #1, #2, #3, #4
Набор октябрь 2012: #1, #2, #3, #4.
Читать дальше →
Всего голосов 120: ↑111 и ↓9+102
Комментарии38

Lock-free структуры данных. Очередной трактат

Время на прочтение16 мин
Количество просмотров53K

Как вы, наверное, догадались, эта статья посвящена lock-free очередям.

Очереди бывают разные. Они могут различаться по числу писателей (producer) и читателей (consumer) – single/multi producer — single/multi consumer, 4 варианта, — они могут быть ограниченными (bounded, на основе предраспределенного буфера) и неограниченными, на основе списка (unbounded), с поддержкой приоритетов или без, lock-free, wait-free или lock-based, со строгим соблюдением FIFO (fair) и не очень (unfair) и т.д. Подробно типы очередей описаны в этой и этой статьях Дмитрия Вьюкова. Чем более специализированы требования к очереди, тем, как правило, более эффективным оказывается её алгоритм. В данной статье я рассмотрю самый общий вариант очередей — multi-producer/multi-consumer unbounded concurrent queue без поддержки приоритетов.
Читать дальше →
Всего голосов 74: ↑71 и ↓3+68
Комментарии8

Принцип 80/20. Руководство для начинающих

Время на прочтение7 мин
Количество просмотров159K
Сегодня мы представляем вашему вниманию перевод статьи A Beginner’s Guide To The 80/20 Principle про принцип работы и использования правила 80/20, в которой, надеемся, читатели найдут для себя полезные инструменты по управлению своей производительностью.


Кратко о 80/20.
“Вам не нужно делать все. Вам необходимо делать только то, что дает результат”.

Вы можете счесть это неправильным, или же использовать в своих интересах. Если вы читаете это, вы – один из тех умных людей, которые скорее предпочтут обуздать энергию этого правила, чем бороться с ним.

Здесь вы узнаете, каким образом можно оптимизировать все, что вы делаете, с самого начала.

Как работает 80/20
В большинстве случаев, около 80% результата происходят из 20% причин. Эти цифры могут меняться – иногда это 70/30 и иногда 90/10. Но какое бы ни было соотношение, суть в том, что небольшое количество причин оказывают непропорционально большое влияние на результат.

Во всем, от привлечения клиентов, постах в блоге, путешествиях, фитнесе, отношениях – вы обнаружите, что правило 80/20 работает везде.

Но давайте немного вернемся назад. Что это за “правило 80/20” и что оно вообще значит?

Оригинальная формулировка правила:
“20% вложений приводят к 80% результата”

Правило происходит из книги Ричарда Коха “Правило 80/20”. Она представляет собой объемное произведение, которое определенно заслуживает быть прочитанным.

Любопытно, если вы откроете книгу Коха, вы обнаружите, на 25 страницах, он упоминает, что вы можете получить самую важную информацию из любой книги, следуя инструкции из трех шагов. Как хороший студент, я последовал его инструкциям — я прочитал начало и конец книги, просмотрел вскользь остальную ее часть, а затем снова прочитал начало и конец. Если автор рассказывает, как читать книги – вам следует прислушаться!
Читать дальше →
Всего голосов 107: ↑65 и ↓42+23
Комментарии60

Кризис и фондовый рынок: роль высокочастотного трейдинга

Время на прочтение3 мин
Количество просмотров11K
Прим. переводчика: Мы довольно много и часто говорим о высокочастостном трейдинге и связанных с этим технологиях, применительно к России. Однако, нам самим, при всем желании, довольно тяжело охватить все аспекты этой интереснейшей темы, особенно то, что происходит за рубежом. Поэтому, в дополнение к нашей секции переводов зарубежных материалов (большинство из них можно найти по ссылке), мы решили запустить в своем блоге на Хабре новую рубрику, в которой будем рассказывать об интересной тематической литературе. Мы можем соглашаться или не соглашаться с тезисами, изложенными в освещаемых нами книгах, но чтобы составить свое мнени — их нужно прочитать. Сегодня у нас первый выпуск, замечания и предложения по формату приветствуются в комментариях. Приятного чтения!

После выхода бестселлера «Большая игра на понижение. Тайные пружины финансовой катастрофы» (The Big Short), в которой Майкл Льюис (Michael Lewis) развенчивал мифы эпохи финансового кризиса, интересы автора переместились в сторону других вопросов. И все же, нет причин сомневаться в том, что Льюис продолжает размышлять о роли, которую играет кризис на современных рынках.

image

Последняя книга Льюиса, «Быстрые мальчики» (Flash Boys: A Wall Street Revolt), рассказывает историю Сергея Алейникова, программиста из Goldman Sachs, попавшего в тюрьму за кражу кода алгоритма высокочастотной торговли Goldman после увольнения из инвестиционного банка. История Алейникова помогает яснее представить «непрозрачный» мир высокочастотных торгов. В понедельник [31 марта 2014 – прим.перев.] книга поступит в продажу. Ее издателем выступило агентство W.W. Norton & Co.
Читать дальше →
Всего голосов 19: ↑14 и ↓5+9
Комментарии34

[видео] Как избежать незапланированного отката: разбор 7 реальных переговорных ситуаций

Время на прочтение4 мин
Количество просмотров41K
Раз уже тема переговоров с заказчиками и коллегами оказалась интересна хабровчанам (48,000 просмотров видео за неделю), мы решили продолжить эту тему.

Предыдущие материалы:


На этот раз мы попросили Дмитрия Коткина, руководителя Санкт-Петербургской школы переговорщиков ШиП разобрать ситуации более подробно. Правда, и ситуации не такие простые. Более конкретные, про проектную работу в ИТ, с непростыми заказчиками и коллегами.

Надеемся, что это окажется вам полезным. Видео-разборы 7 реальных ситуация — под катом:
  • “На свободу — с готовой отчетностью!”
  • “4 часа, чтобы сделать клиенту чушь”
  • “Миссия невыполнима (с данным оборудованием)”
  • “Начинайте работы, через 14 часов открытие магазина”
  • “Наш бюджет в 3 раза меньше”
  • “Незапланированный откат”
  • “Если у вас в руках молоток, то все вокруг кажется гвоздем”


Читать дальше →
Всего голосов 47: ↑43 и ↓4+39
Комментарии16

Интерпретация во время компиляции, или Альтернативное понимание лямбд в C++11

Время на прочтение22 мин
Количество просмотров32K
Yo dawg, I heard you like programming. So we put a language in you language, so you can program while you programНа Хабре недавно проскочила ещё одна статья про вычисления на шаблонах C++ от HurrTheDurr. В комментариях к ней лично я увидел вызов:

> С каждым новым релизом количество способов нетривиально вывихнуть себе мозг при помощи С++ продолжает увеличиваться)
> > Особенно, если не менять подход к реализации игрового поля и продолжать пытаться все вычисления выполнять не над константами, а над типами.


А так ли сложно будет написать универсальный вычислитель на типах, более удобный для программирования, чем клеточный автомат? Как оказалось, несложно; я в 30 раз больше времени потратил на эту статью, чем на написание и отладку собственно кода вычислителя.

Чуть раньше AveNat опубликовала введение в лямбда-исчисление в двух частях, так что вдохновение пришло мгновенно. Хотелось, чтобы можно было (образно) писать так:
#include <iostream>

#include <LC/kernel.h>
#include <LC/church_numerals.h>

int main()
{
    // Представление натуральных чисел в виде лямбда-абстракций
    typedef ChurchEncode<2> Two;    // 2 = λfx.f (f x)
    typedef ChurchEncode<3> Three;  // 3 = λfx.f (f (f x))

    // * = λab.λf.a (b f)
    typedef Lambda<'a', Lambda<'b', Lambda<'f',
                Apply<Var<'a'>, Apply<Var<'b'>, Var<'f'> > >
        > > > Multiply;

    // Вычисление (* 2 3)
    typedef Eval<Apply<Apply<Multiply, Two>, Three>> Output;

    // Переход обратно от лямбда-абстракций к натуральным числам
    typedef ChurchDecode<Output> Result;

    std::cout << Result::value;
}

А на выходе получать такое:
ilammy@ferocity ~ $ gcc cpp.cpp
ilammy@ferocity ~ $ ./a.out
6

Статья получилась несколько великоватой, так как мне хотелось рассказать обо всех интересных штуках, которые здесь используются. И ещё она требует базового набора знаний о лямбда-исчислении. Приведённых выше обзоров, среднего знания C++ (с шаблонами), и здравого смысла должно быть достаточно для понимания содержимого.

Под катом находится очередное прокомментированное конструктивное доказательство Тьюринг-полноты шаблонов C++ в виде compile-time интерпретатора бестипового лямбда-исчисления (плюс печеньки в виде макросов и рекурсии).
Читать дальше →
Всего голосов 102: ↑98 и ↓4+94
Комментарии13

По следам бременских музыкантов, или «Как нам выстроить информационную защиту России» правильно

Время на прочтение9 мин
Количество просмотров24K
image

Смех продлевает жизнь


Как известно, вчера мы насладились то ли суперсарказмом, то ли гэгом, то ли «у автора весеннее обострение» — на тему «как нам обустроить рабкрин» «Как нам выстроить информационную защиту России».

Попробуем разобрать — что же в предложенном «не так». Как известно — не знаешь как изложить материал — придерживайся методички.

  1. Что это?
  2. Для кого это?
  3. Как этим пользоваться?

И вот только после этого можно переходить к деталям.

Увы — в исходном тексте важной преамбулы не оказалось. Простите — а от кого мы собираемся защищаться? Зачем? Какие именно угрозы нам необходимо пресечь или хотя бы ослабить?
Читать дальше →
Всего голосов 85: ↑61 и ↓24+37
Комментарии53

Кому доверить свой бизнес? Часть 1 — бухгалтерия

Время на прочтение11 мин
Количество просмотров74K
Московский рынок бизнес-услуг крайне пышен и богат. Приходится внимательно изучать его флору и фауну, ведь наша сервисная компания — не единственный способ получить хорошее обслуживание. Недавно мы провели небольшое исследование, нагуглили популярные варианты бухгалтерского и юридического сопровождения, изучили предложения секретарей и бизнес-ассистентов. Обычно маркетологи хранят результаты изысканий в секрете, но мы решили о них рассказать. Хочется верить, что это сэкономит предпринимателям пару часов времени на поисках варианта обслуживания, подходящего для их компании. Начнем с бухгалтерии.



Мы исследовали варианты бухгалтерского обслуживания, которые подойдут бизнесам от малого до среднего. Получилось всего 7 категорий, каждой из которых мы постарались дать объективную характеристику, определить ценовую вилку и выделить наиболее заметные (читай, разрекламированные) предложения.
Читать дальше →
Всего голосов 35: ↑31 и ↓4+27
Комментарии36

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность