Как стать автором
Обновить
69
0
Yogev Ezra @yogev_ezra

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

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

Embedded Sphinx, или поиск на роутере

Время на прочтение29 мин
Количество просмотров12K
Поисковый сервер Sphinx (sphinxsearch) позиционируется как система, весьма неплохо масштабируемая под высокие нагрузки и большие объёмы индексов. В целом это неплохо — но иногда под рукой нет машины с 16-ядерным процессором и 256Гб оперативки. А что делать, если ядро всего одно? А если и с объёмом памяти не очень? А если это не сервер и даже не средний PC, а вообще роутер на SoC, с далеко не самым быстрым «камнем», и где всего 32Мб оперативки, да и ту нужно делить с другими процессами и системой? Взлетит ли в таком случае поисковик? Будет ли работать? Оправдано ли?
Да, взлетит. Да, будет работать. Да, вполне оправдано.
Расскажу, как
Всего голосов 29: ↑29 и ↓0+29
Комментарии11

Черная пятница. Как же всё было на самом деле

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

6 декабря 2013 года в России проходила черная пятница. Было заявлено о больших скидках.
Я узнал об этом в одной статье еще за месяц до начала. Прочитав много комментариев к той статье, я понял, что все пользователи сходятся во мнении, что:
  1. Никаких грандиозных скидок не будет.
  2. Если скидки всё-таки будут, то только на те товары, которые не очень то и нужны.
  3. Сама скидка сводится к тому, что в этот день цена товара завышается, а за счет скидки понижается до первоначального уровня, но никак не меньше.

Было решено узнать, а как всё происходит на самом деле.
В той статье упоминались несколько компаний, участвующих в акции. Я выбрал 2 компании для анализа: Сотмаркет и Белый Ветер.
Подробности
Всего голосов 189: ↑167 и ↓22+145
Комментарии174

О чем НЕ говорят разработчики или 7 любимых выражений программистов

Время на прочтение5 мин
Количество просмотров90K
Друзья! Мы все очень любим (или не любим) поговорить о шаблонах проектирования. Лично я их сильно недолюбливаю, т.к. большинство из них достаточно очевидны для более или менее опытного разработчика, а шаблонность мышления еще никому в жизни не помогала.

Но поговорим мы сегодня не о них, а о других шаблонах, а именно шаблонах поведения, наших людских паттернах, а скорее даже антипаттернах. Чтобы подлить масла в огонь хотел бы немного расшифровать название этого поста.

В повседневной жизни я стараюсь не употреблять слово «программист». Оно для меня несет негативный оттенок и сразу вспоминаются 90-е, когда кого только программистами не называли. Они и картриджи у принтеров меняли и бабушкам-бухгалтерам помогали их первый комп осваивать. Помните это нетленное «Ты же программист!»? В общем дискредитировало себя это слово.

Я как-то привык своих людей называть разработчиками (developers) и для меня программист — это эдакий антипод разработчика. Ну и с годами опыта я познал большое количество антипаттернов для хорошего разработчика, пользоваться которыми он должен как можно реже. Чем реже я их слышу, тем я счастливее. Итак, приступаем.

001. А у меня на компе работает


Эта фраза знакома всем, кто хотя бы несколько месяцев работает в индустрии и просто должна быть исключена из лексикона любого разработчика. Чувак, если ты отправляешь на тестирование код, который не работает у тебя на компе, то тебе не место в профессии! По определению у тебя на компе код всегда работает. Разве может быть иначе? А не работает он у тестировщика, клиента, да кого угодно, потому, что ты не учел какие-то нюансы, различия в окружении, данных, погоде на Марсе и твоя задача выяснить, что именно и исправить, а не пытаться сразу откосить и доказать свою невиновность. Нет ничего страшного в том, что ты чего-то не учел. В моей практике бывали случаи учесть которые мог бы только… Да никто не мог бы!

Больше паттернов!
Всего голосов 283: ↑137 и ↓146-9
Комментарии310

Открытый Терминальный Клиент — первый шаг

Время на прочтение6 мин
Количество просмотров35K
Это первая моя статья на Хабр. Спасибо Хабру за предоставление этой возможности нашей компании.
Мы делаем конечное устройство — ультратонкий клиент — терминальный клиент для «всех» (RDP, VMWare, S.P.I.C.E. и другие) терминальных систем. «Всех» в кавычках потому что это пока не реализовано, но пути есть.
Сейчас готов прототип — плата DS-109 (размером 100мм*100мм) — CPU 1 ГГц, RAM 1 ГБ, NAND 4Гб,…

Закончено производство платы DS-110, характеристики платы opensourceclient.org/faq/specifications-ds-110

Ниже я кратко расскажу о пути, который привел нас под предводительством меня к нынешнему состоянию дел.
Рассказ
Всего голосов 50: ↑43 и ↓7+36
Комментарии117

Майнинг и как он работает: матчасть

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

Привет, %username%!
Я расскажу и покажу как работает основа генерации денег в криптовалютах — майнинг. Как создается первый блок, новые блоки и как появляются деньги из ниоткуда.
Чтобы было проще понять, мы напишем свой импровизированный майнер для импровизированной криптовалюты HabraCoin.
Читать дальше →
Всего голосов 274: ↑252 и ↓22+230
Комментарии482

Цифровая погоня за золотым гусём, или как самая большая афера в истории Bitcoin превратилась в фарс

Время на прочтение7 мин
Количество просмотров111K
Жертвы недавней аферы в сфере криптовалют попытались вернуть свои украденные биткоины и попробовали обойти анонимность, заложенную в саму основу криптовалюты. В начале декабря был закрыт SheepMarketplace, сайт, который использует биткоины и анонимный браузер Tor для обеспечения онлайн-продаж запрещенных товаров. Администрация сайта сообщила, что один из дилеров нашел баг в системе, который был использован для кражи 5400 BTC.

Но пользователи заподозрили неладное, и посчитали, что сайт, скорее всего, беспричинно удерживает гораздо большие средства, принадлежащие пользователям, и не собирается их возвращать. В итоге, бывшие клиенты SMP объединяются, и находят биткоин-бумажник, содержащий 96000 BTC, которые, как они посчитали, связаны с аферой. По курсу на тот момент содержание кошелька составляло 100 миллионов долларов.


Погоня за деньгами


То, что произошло дальше было возможно только за счет уникальных особенностей системы биткоин, одна из которых — открытость операций между кошельками. В результате, когда деньги начали передаваться между счетами — пользователи последовали за этими транзакциями.
Читать дальше →
Всего голосов 99: ↑84 и ↓15+69
Комментарии56

Подарки от гиков родным и близким

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


Вновь приветствуем вас этим погожим, теперь уже официально зимним днём. На календаре декабрь, а значит мы вышли на финишную прямую в подготовке к Новому Году. В нашем прошлом посте мы предложили вам несколько идей подарков для гиков. Однако гики не сферические кони в вакууме, у них есть матери, жёны, дочери, любовницы. Все эти милые родственники и им сочувствующие тоже любят получать подарки. Нам, мужчинам, выбор подарка для женщины традиционно даётся непросто. Поэтому сегодня мы хотели бы оказать помощь гикам в подборе подарков для своих родных и близких женщин.
Читать дальше →
Всего голосов 88: ↑73 и ↓15+58
Комментарии64

Qt Bitcoin Trader — программа для торговли Bitcoin под Windows, Mac и Linux

Время на прочтение7 мин
Количество просмотров108K
В этой статье я покажу вам, как работает программа Qt Bitcoin Trader, и поведаю историю ее разработки.
Эта программа с открытым исходным кодом позволяет быстро делать ставки на BTC-e и Mt.Gox, задавать правила для автоматической торговли.
Написана она на чистом Qt 4 с использованием OpenSSL, и, по моему мнению, в ней есть интересные особенности со стороны разработки, о которых тоже хочу рассказать.


Читать дальше →
Всего голосов 69: ↑54 и ↓15+39
Комментарии51

Как убедиться, что флешка работает в USB 3.0?

Время на прочтение5 мин
Количество просмотров143K
В современной IT-индустрии часто случается так, что заверения производителя устройства относительно его функциональности не соответствуют действительности. От скепсиса по этому поводу перейдем к решению конкретной технической задачи…
Читать дальше →
Всего голосов 47: ↑39 и ↓8+31
Комментарии33

Wireshark — приручение акулы

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


Wireshark — это достаточно известный инструмент для захвата и анализа сетевого трафика, фактически стандарт как для образования, так и для траблшутинга.
Wireshark работает с подавляющим большинством известных протоколов, имеет понятный и логичный графический интерфейс на основе GTK+ и мощнейшую систему фильтров.
Кроссплатформенный, работает в таких ОС как Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Mac OS X, и, естественно, Windows. Распространяется под лицензией GNU GPL v2. Доступен бесплатно на сайте wireshark.org.
Установка в системе Windows тривиальна — next, next, next.
Самая свежая на момент написания статьи версия – 1.10.3, она и будет участвовать в обзоре.

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

Начинаем плаванье


Для начала захвата достаточно выбрать свой сетевой интерфейс и нажать Start.
Читать дальше →
Всего голосов 207: ↑202 и ↓5+197
Комментарии60

Поддержка USB в KolibriOS: что внутри? Часть 6: драйвер хабов

Время на прочтение8 мин
Количество просмотров9.3K
Последняя часть инфраструктуры USB — хабы. Хотя хабы — отдельные USB-устройства, они достаточно тесно связаны с другими частями инфраструктуры, чтобы спецификация хабов была частью основной спецификации USB, а код поддержки — частью ядра, расположенной в файле bus/usb/hub.inc.

Задачи хабов таковы.
  • Хабы предоставляют питание всем подключённым устройствам.
  • Хабы оповещают хост о подключении и отключении устройств.
  • Хабы делают сброс подключённого устройства, попутно определяя его скорость, по команде с хоста.
  • Хабы транслируют весь трафик, приходящий от хоста, подключённым устройствам в период после сброса и до отключения, а также трафик от устройств в обратную сторону.
  • HighSpeed-хабы содержат Transaction Translator, связывающий HighSpeed-шину с низкоскоростной USB1-шиной.

Трансляция трафика без переключения скорости происходит полностью прозрачно для хоста. Расщеплёнными транзакциями занимается хост-контроллер EHCI, здесь от софта важно только заполнить те поля в аппаратной части структуры канала, которые содержат адрес TT-хаба и порт в TT-хабе — и, разумеется, учитывать время транзакций при планировании. Драйвер хабов управляет остальными пунктами списка задач.


Хабы имеют код класса устройства 9, код подкласса устройства 0 и три варианта 0, 1, 2 для кода протокола. Согласно спецификации USB, HighSpeed-хаб обязан поддерживать режим работы с единым TT для всех своих портов, и дополнительно может, но не обязан, поддерживать режим работы с отдельным TT для каждого порта. Типичный случай — режим с различными TT отсутствует, тогда код протокола равен 0. В случае поддержки такого режима в данных конфигурации должны быть два варианта дескриптора интерфейса с одинаковым номером интерфейса. Тогда код протокола 1 идентифицирует режим с единым TT, который должен быть принят по умолчанию, а код протокола 2 — режим с различными TT, включаемый командой SET_INTERFACE. Существование в живой природе хабов, поддерживающих режим с различными TT, не подтверждено, как и польза от этого режима, поэтому драйвер хабов даже не пытается его обнаружить и включить и просто использует режим единого TT, включённый по умолчанию.

Обнаружив интерфейс класса 9, уровень логического устройства читает структуру usb_hub_callbacks, содержащую указатели на функции драйвера usb_hub_init и usb_hub_disconnect. Работа драйвера начинается, когда уровень логического устройства вызывает usb_hub_init, и заканчивается, когда уровень поддержки каналов вызывает usb_hub_disconnect в ответ на отключение устройства.
Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии20

Десять имён для одной архитектуры

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

На пятничном семинаре учебного проекта лаборатории МФТИ-Интел один из студентов задал мне примерно такой вопрос: а почему 64-битный вариант архитектуры процессоров Intel называется x64, а 32-битный — x86? Я начал объяснять, что не всё так просто. Захотелось нарисовать более полную картину. Ведь на самом деле это не x64, и даже не x86.
Читать дальше →
Всего голосов 112: ↑102 и ↓10+92
Комментарии51

Как разрабатывать неподдерживаемое ПО

Время на прочтение4 мин
Количество просмотров45K
Мне платят за то, что я возвращаю чужой технический долг. В своей работе я вижу много сложного в поддержке кода, и я снова и снова вижу много проблем, которых можно было избежать.

Я специализируюсь на отладке, исправлении, поддержке и расширении функциональности старого программного обеспечения. Мой типичный клиент имеет веб-сайт или приложение, которое более-менее работает, но автор которого недоступен. Бизнес-требования изменились, и ПО перестало им удовлетворять. Или у моего клиента есть что-то, что «уже закончено», но он расстался с разработчиком после исчерпания бюджета и сроков. Обычно такая ситуация сопровождается списком пропущенных фич и багов.
Мой типичный клиент обычно разговаривал с другими программистами, которые рекомендовали выбросить имеющееся и начать разработку с нуля. Большинство программистов не любит поддержку кода, и особенно, они не любят поддержку чужого кода.
Читать дальше →
Всего голосов 95: ↑89 и ↓6+83
Комментарии93

Ущербно-ориентированное программирование

Время на прочтение6 мин
Количество просмотров88K
Ущербно-ориентированное программирование — это набор подходов, поощряющий повторное использование кода и гарантирующий долгосрочное использование производимого программистами кода в боевых системах. Количество строк кода является повсеместно применяемым показателем значимости приложения, а количество строк, которые программист пишет за рабочий день — полезная метрика, применяемая при планировании проектов и распределении ресурсов. Ущербно-ориентированное программирование — это один из наиболее эффективных способов получить наиболее объемный исходник в кратчайшие сроки.

Ущербный — имеющий изъян, неполноценный. Вредный, недостаточный.

Наследование


Наследование — это способ получить возможности старого кода в новом коде. Программист наследуется от существующей функции или блока кода, копируя этот кусок к себе и внося правки. Унаследованный код, как правило, конкретизируется под новые нужды с помощью возможностей, которые не поддерживал старый код. В таком смысле, старый код остается нетронутым, но новый наследуется от него.
Читать дальше →
Всего голосов 203: ↑174 и ↓29+145
Комментарии115

INCOS — бесконтактная система управления компьютером из Белоруссии

Время на прочтение3 мин
Количество просмотров26K
Мы все уже привыкли к крутым проектам на Кикстартере. Все чаще мы видим там наших соотечественников, но наши родные крауд-площадки пока не радуют сногсшибательными технологиями или вау-эффектом от классных дизайнерских штучек.
Когда я узнал об этом проекте я не мог поверить, что простые Белорусские ребята могут осуществить такую задумку. Сейчас я активно с ними беседую и надеюсь, что скоро смогу написать не просто новостной обзорный пост, но и интересные особенности реализации, снабженные фотографиями прототипов и описаниями технической стороны разработки.

INCOS (от английского INtelligent COntrol System) — это голосовое, жестовое и комбинированное управление компьютером в рамках одного устройства.

image
Читать дальше →
Всего голосов 31: ↑28 и ↓3+25
Комментарии44

Поддержка USB в KolibriOS: что внутри? Часть 5: уровень логического устройства

Время на прочтение7 мин
Количество просмотров6.9K
Обработка подключения устройства, начатая на уровне поддержки хост-контроллеров, остановилась, подготовив нулевую конечную точку устройства к работе. Уровень поддержки каналов предоставил методы работы с каналами. Самое время их применить для продолжения инициализации устройства: включается функция usb_new_device из bus/usb/protocol.inc.

Сейчас устройство мало что может: оно ещё не получило адрес на шине, ещё не сконфигурировано, может использовать только 100 мА питания от шины. В общем-то, всё, что устройство может, — это рассказать о себе в ответ на подходящие вопросы. Рассказ устройства о себе организован в виде дескрипторов. Подходящим вопросом считается команда GET_DESCRIPTOR, отправленная нулевой конечной точке; в команде должны быть указаны тип дескриптора, порядковый номер дескриптора среди всех с таким типом, длина данных для передачи. Каждая команда к управляющей конечной точке занимает 8 байт и может иметь или не иметь дополнительных данных, в некоторых командах некоторые поля не используются. Структура команд по байтам и используемые поля расписаны в главе 9 спецификации USB, здесь я буду только описывать входные и выходные данные для команд.

Уровень логического устройства имеет две задачи: во-первых, сконфигурировать устройство; во-вторых, расспросить его, загрузить соответствующий драйвер — или даже драйверы — и сообщить драйверу о новом устройстве.

Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии31

Покупаем Nexus 5 через Google Play

Время на прочтение11 мин
Количество просмотров303K
После успешного релиза смартфона Nexus 4 компании LG и Google вновь объединили усилия и анонсировали первый смартфон на основе самой свежей версии ОС Android — Android™ 4.4, KitKat®. Получивший новые характеристики смартфон Nexus 5 является самой тонкой и быстрой моделью в линейке устройств Google Nexus на сегодняшний день.

Для жителей Соединенных Штатов Nexus 5 продается в 4 модификациях:
  • Nexus 5 (16 ГБ, черный) — 349$
  • Nexus 5 (32 ГБ, черный) — 399$
  • Nexus 5 (16 ГБ, белый) — 349$
  • Nexus 5 (32 ГБ, белый) — 399$



На данный момент аппарат можно заказать в США. Но, к сожалению, для жителей СНГ раздел Устройства недоступен в Play Маркет'е. Поэтому просто положить товар в корзину, ввести адрес и оплатить — не получится. Но не будем отчаиваться и попытаемся обойти этот запрет. В статье я постараюсь максимально подробно рассказать о процедуре покупки и различных тонкостях. Начнём!
Читать дальше →
Всего голосов 194: ↑142 и ↓52+90
Комментарии173

Узбеки и IT

Время на прочтение4 мин
Количество просмотров244K
Я всегда уважаю мнение хабрасообщества, мне нравится, что здесь собралось столько умных людей, достойных подражания. Но комментарии к этой статье… Чтобы хоть немного зарыть себя еще глубже развеять стереотипы об узбекском программисте, решил написать о нашей жизни.

Читать дальше →
Всего голосов 334: ↑314 и ↓20+294
Комментарии291

Эмулятор x86 на JavaScript

Время на прочтение1 мин
Количество просмотров37K
Virtual x86 — еще один эмулятор платформы x86 на языке программирования JavaScript. Как и JSLinux от Фабриса Беллара, для запуска Linux здесь достаточно только браузера. После загрузки образа нормально работают все встроенные команды Linux, работают компилированные программы, файловая система и проч., хотя сетевых интерфейсов пока нет.


Читать дальше →
Всего голосов 100: ↑91 и ↓9+82
Комментарии43

Обзор Highscreen Boost 2: две недели без розетки*

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


1-го октября в продажу поступил самый долгоиграющий в мире смартфон: Highscreen Boost 2, по заявлению производителей он держит зарядку до 2-х недель и уже метит в Книгу рекордов Гиннесса. Мне удалось протестировать прототип, который был получен на тест больше недели назад.
Читать дальше →
Всего голосов 38: ↑29 и ↓9+20
Комментарии17

Информация

В рейтинге
Не участвует
Откуда
Израиль
Дата рождения
Зарегистрирован
Активность