Как стать автором
Обновить
2
0
Vanya Davidenko @f0b0s

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

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

Что такое стартап? Повторение – мать учения

Время на прочтение3 мин
Количество просмотров4.8K
Данное эссе начало зарождаться в виде комментария к посту Твой стартап — не стартап, а просто веб-сайт. Когда счетчик слов перевалил за 500, решил, что стоит опубликовать свои мысли в виде отдельного хабратопика.

Так все же, что такое стартап? Неужели до сих пор нет единого понимания, что означает это набившее всем оскомину слово, употребляемое к месту и не к месту и ставшее уже почти ругательным? Мой взгляд – с несколько иной перспективы. Последние 6 лет я живу в Таиланде, общаюсь здесь с тайскими и англоязычными стартаперами, читаю в основном англоязычные новости, блоги и книги на эту тему. Так вот, в англоязычной тусовке слово «startup» не является ругательным, а имеет совершенно конкретный смысл и употребляется для удобства и взаимного понимания, о чем идет речь.
Читать дальше →
Всего голосов 79: ↑56 и ↓23+33
Комментарии24

Мой опыт реанимации жесткого диска

Время на прочтение3 мин
Количество просмотров377K
Наверное, рано или поздно это случается с каждым — однажды и у меня слетел usb-жесткий диск.
Куда-то сильно торопился и просто выдернул шнурок из гнезда USB в ноутбуке (как это часто бывает).
Прихожу на работу, подключаю HDD, а он пустой…
image
Что делать!? Что делал я — читаем далее.
Читать дальше →
Всего голосов 52: ↑35 и ↓17+18
Комментарии84

Плюсы и минусы лицензий открытого ПО

Время на прочтение5 мин
Количество просмотров35K
Свободное программное обеспечение — широкий спектр программных решений, в которых права пользователя («свободы») на неограниченные установку, запуск, а также свободное использование, изучение, распространение и изменение (совершенствование) программ защищены юридически авторскими правами при помощи свободных лицензий.

Характеристики лицензий:
1. Apache Software License
2. Лицензия BSD
3. GNU General Public License
4. Лицензии MIT
5. Mozilla Public License
6. Консорциум Всемирной паутины

Читать дальше →
Всего голосов 95: ↑79 и ↓16+63
Комментарии90

Here be dragons: Управление памятью в Windows как оно есть [1/3]

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

Каталог:
Один
Два
Три

Менеджер памяти (и связанные с ним вопросы контроллера кеша, менеджера ввода/вывода и пр) — одна из вещей, в которой (наряду с медициной и политикой) «разбираются все». Но даже люди «изучившие винду досконально» нет-нет, да и начинают писать чепуху вроде (не говоря уже о другой чепухе, написанной там же):
Грамотная работа с памятью!!! За все время использования у меня своп файл не увеличился ни на Килобайт. По этому Фаерфокс с 10-20 окнами сворачивается / разворачивается в/из трея как пуля. Такого эффекта я на винде добивался с отключенным свопом и с переносом tmp файлов на RAM диск.

Или к примеру μTorrent — у меня нет никаких оснований сомневаться в компетентности его авторов, но вот про работу памяти в Windows они со всей очевидностью знают мало. Не забываем и товарищей, производящих софт для слежения за производительностью и не имеющих ни малейшего понятия об управлении памятью в Windows (и поднявших по этому поводу истерику на пол интернета, на Ars-е даже был разбор полетов). Но самое потрясающее, что я видел всвязи с управлением памятью — это совет переместить pagefile на RAM-диск:
Из моих трех гигабайт под RAM disk был выделен один (на тот момент, когда на лаптопе еще была установлена XP), на котором я создал своп на 768МБ ...

Цель данной статьи — не полное описание работы менеджера памяти (не хватит ни места ни опыта), а попытка пролить хоть немного света на темное царство мифов и суеверий, окружающих вопросы управления памятью в Windows.
Читать дальше →
Всего голосов 360: ↑338 и ↓22+316
Комментарии85

Я хочу работать в Google! Телефонное интервью (часть 1)

Время на прочтение4 мин
Количество просмотров31K
Привет Хабр! Давно не писал. Да это и понятно. Защита диссертации, получение PhD, а сейчас ещё и активный поиск работы — всё это занимает очень много драгоценного времени. Но разговор сегодня пойдёт не о том. Хотелось бы поделиться с Вами, уважаемые хабралюди, ресурсами и описанием процесса подготовки к телефонному техническому интервью с Гуглом, первый технический этап которого я уже прошёл, и теперь готовлюсь ко второму, который будет в пятницу.
Читать дальше →
Всего голосов 207: ↑182 и ↓25+157
Комментарии99

Распознавание текста в ABBYY FineReader (2/2)

Время на прочтение10 мин
Количество просмотров31K
Содержание
imageРаспознавание текста в ABBYY FineReader (1/2)
imageРаспознавание текста в ABBYY FineReader (2/2)

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


Мы, наконец, дошли до самой интересной темы – распознавания символа. Но для начала давайте немного разберемся с теорией, чтобы было понятнее, что именно и почему мы делаем. Общая задача автоматического распознавания или машинного обучения выглядит следующим образом.

Есть некоторый набор классов C и пространство объектов R. Есть некая внешняя «экспертная» система, с помощью которой для произвольного объекта можно определить, к какому классу он относится.

Задача автоматического распознавания – построить такую систему, которая на основе переданной ей ограниченной выборки заранее классифицированных объектов выдавала бы для любого нового переданного ей объекта соответствующий ему класс. При этом суммарная разница в классификации между «экспертной» системой и системой автоматического распознавания должна быть минимальной.

Система классов может быть дискретной или непрерывной, множество объектов может быть какой угодно структуры, экспертная система может быть произвольной, начиная с обычных человеческих экспертов, оценка точности может производиться только на некоторой выборке объектов. Но в своей основе практически любая задача автоматического распознавания (от ранжирования результатов поиска до медицинской диагностики) сводится именно к построению связки между объектами из заданного пространства и набором классов.


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

Как правильно мерять производительность диска

Время на прочтение14 мин
Количество просмотров335K
abstract: разница между текущей производительностью и производительностью теоретической; latency и IOPS, понятие независимости дисковой нагрузки; подготовка тестирования; типовые параметры тестирования; практическое copypaste howto.

Предупреждение: много букв, долго читать.

Лирика



Очень частой проблемой, является попытка понять «насколько быстрый сервер?» Среди всех тестов наиболее жалко выглядят попытки оценить производительность дисковой подсистемы. Вот ужасы, которые я видел в своей жизни:
  • научная публикация, в которой скорость кластерной FS оценивали с помощью dd (и включенным файловым кешем, то есть без опции direct)
  • использование bonnie++
  • использование iozone
  • использование пачки cp с измерениема времени выполнения
  • использование iometer с dynamo на 64-битных системах


Это всё совершенно ошибочные методы. Дальше я разберу более тонкие ошибки измерения, но в отношении этих тестов могу сказать только одно — выкиньте и не используйте.

Как мерять правильно
Всего голосов 151: ↑145 и ↓6+139
Комментарии164

«Универсальные» ссылки в C++11 или T&& не всегда означает «Rvalue Reference»

Время на прочтение14 мин
Количество просмотров41K
Не так давно Скотт Майерс (англ. Scott Meyers) — эксперт по языку программирования C++, автор многих известных книг — опубликовал статью, описывающую подробности использования rvalue ссылок в C++11.
На Хабре эта тема еще не поднималась, и как мне кажется, статья будет интересна сообществу.
Оригинал статьи: «Universal References in C++11—Scott Meyers»

«Универсальные» ссылки в C++11


T&& не всегда означает “Rvalue Reference”

Автор: Scott Meyers

Возможно, наиболее важным нововведением в C++11 являются rvalue ссылки. Они служат тем фундаментом, на котором строятся «семантика переноса (англ. move semantics)» и «perfect forwarding». (Вы можете ознакомится с основами данных механизмов в обзоре Thomas’а Becker’а).

Синтаксически rvalue ссылки объявляются также, как и «нормальные» ссылки (теперь называемые lvalue ссылками), за исключением того, что вы используете два амперсанда вместо одного. Таким образом, эта функция принимает параметр типа rvalue-reference-to-Widget:
void f(Widget&& param);

Учитывая, что rvalue ссылки объявляются с помощью “&&”, было бы разумно предположить, что присутствие “&&” в объявлении типа указывает на rvalue ссылку. Но это не так:
Widget&& var1 = someWidget;         // здесь “&&” означает rvalue ссылку

auto&& var2 = var1;                 // здесь “&&” НЕ означает rvalue ссылку

template<typename T>
void f(std::vector<T>&& param);     // здесь “&&” означает rvalue ссылку

template<typename T>
void f(T&& param);                  // здесь “&&” НЕ означает rvalue ссылку
Читать дальше →
Всего голосов 56: ↑53 и ↓3+50
Комментарии68

Web-приложение на C/C++ с помощью FastCGI — это просто

Время на прочтение20 мин
Количество просмотров111K
Добрый день.
В этой статье я бы хотел рассказать про протокол FastCGI и способы работы с ним. Не смотря на то, что сам протокол и его реализация появились ещё в 1996 году, подробных руководств по этому протоколу просто нет — разработчики так и не написали справки к собственной библиотеке. Зато года два назад, когда я только начал пользоваться этим протоколом, часто встречались фразы типа «я не совсем понимаю, как пользоваться этой библиотекой». Именно этот недостаток я и хочу исправить — написать подробное руководство по использованию данного протокола в многопоточной программе и рекомендации по выбору различных параметров, которым могли бы воспользоваться все желающие.
Читать дальше →
Всего голосов 102: ↑97 и ↓5+92
Комментарии104

Руководство новичка по эксплуатации компоновщика

Время на прочтение32 мин
Количество просмотров203K
David Drysdale, Beginner's guide to linkers (http://www.lurklurk.org/linkers/linkers.html).

Цель данной статьи — помочь C и C++ программистам понять сущность того, чем занимается компоновщик. За последние несколько лет я объяснил это большому количеству коллег и наконец решил, что настало время перенести этот материал на бумагу, чтоб он стал более доступным (и чтоб мне не пришлось объяснять его снова). [Обновление в марте 2009: добавлена дополнительная информация об особенностях компоновки в Windows, а также более подробно расписано правило одного определения (one-definition rule).

Типичным примером того, почему ко мне обращались за помощью, служит следующая ошибка компоновки:
g++ -o test1 test1a.o test1b.o
test1a.o(.text+0x18): In function `main':
: undefined reference to `findmax(int, int)'
collect2: ld returned 1 exit status

Если Ваша реакция — 'наверняка забыл extern «C»', то Вы скорее всего знаете всё, что приведено в этой статье.
Читать дальше →
Всего голосов 194: ↑193 и ↓1+192
Комментарии38

Portable Components, вспомогательные средства разработки ПО

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

Продолжая свою предыдущую статью, посвященную библиотеке POCO (Portable Components), хотелось бы рассказать об оснастке POCO Application и её таких производных, как ServerApplication и ConsoleApplication.
Оснастка Application создана для упрощения разработки ПО и, как правило, экономии времени. Пользуясь данной оснасткой, мы cможем создать консольные приложения, службы Windows и демоны UNIX за считанные минуты.

Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Комментарии46

I'm Feeling Lucky в стандартном поиске браузера

Время на прочтение2 мин
Количество просмотров5.6K
Когда-то давно, когда горы были выше, а деревья зеленее, в браузерах поиск в адресной строке работал так, как это было правильно: он использовал функцию Google I'm Feeling Lucky. Вы могли легко вводить «хабр» вместо «habrahabr.ru», вводя «Сан-Франциско», вы сразу же попадали на сайт этого города в Википедии (ведь туда вы и хотели, правда?), а фраза «php in_array» моментально перекидывала вас на документацию по этой функции, в синтаксисе которой вы в очередной раз забыли, needle или haystack идет первым.

Но потом Гугл понял, что $110 млн в год, которые они теряют из-за того, что вам никто не показал рекламу на эти запросы — это непозволительно много, и больше браузеры по умолчанию не хотят демонстрировать нам всю телепатическую магию поиска I'm Feeling Lucky, а вместо этого демонстрируют промежуточное звено поисковой страницы, на которой вы все равно как всегда сразу же нажимаете на первую ссылку (ведь где еще может быть Википедия?), но зато посмотрели рекламу и добросовестно уменьшили рекламодателю CTR.

Как вернуть все взад
Всего голосов 67: ↑61 и ↓6+55
Комментарии36

Лекториум записал почти тысячу лекций за год

Время на прочтение4 мин
Количество просмотров57K
Дорогой Хабр!



У нас для тебя небольшой подарок. Мы тут работали-работали и вот чего сделали.
Сняли и опубликовали почти тысячу лекций по IT и математике.

UPD2 Помогите, пожалуйста, оперативно решить вопрос насчёт организации торрентов на php.

Читать дальше →
Всего голосов 340: ↑333 и ↓7+326
Комментарии183

Выбор Pull To Refresh инструмента

Время на прочтение5 мин
Количество просмотров21K
    Недавно столкнулся с проблемой внедрения в проект механизма Pull To Refresh для обновления списков. Ввиду специфичности имеющихся списков (списки разной длины, от 0 до ~100; подгрузка элементов по требованию; набор списков располагается в самописном компоненте, аля ViewPager) это действительно оказалось проблематично. О всех моих изысканиях в данном направлении читайте под катом.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии5

Java сертификация. Подготовка к SCJP

Время на прочтение5 мин
Количество просмотров70K
В этом месяце я сдавал экзамен SCJP. В этом топике я расскажу о подготовке и экзамене.
В основном для тех, кто собирается сдавать и кому нужно больше информации об этом.

Уточнение


Так как Sun'a больше нет, то и экзамена SCJP тоже нет. Теперь он значится так:
1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam.
прочитать об экзамене и посмотреть задачи
Всего голосов 89: ↑84 и ↓5+79
Комментарии43

RubyMonk — уроки Руби от Монаха

Время на прочтение1 мин
Количество просмотров4.5K
rubymonk

Вышла альфа версия онлайн уроков по Руби — RubyMonk. Пока что это 46 заданий, которые охватывают работу со строками, массивами и циклами. Сделано все красиво и удобно, работает в стиле подобного сервиса Rails For Zombies
Все бесплатно, зайти можно через аккаунт на Твиттере или ГитХабе: rubymonk.com
Всего голосов 53: ↑50 и ↓3+47
Комментарии18

Мигель де Икаса даёт советы по Unix

Время на прочтение2 мин
Количество просмотров6.2K
Один из самых известных Unix-программистов Мигель де Икаса (основатель проектов GNOME и Mono) в своём блоге дал парочку советов, как повысить продуктивность работы в шелле Unix. Он говорит, что иногда встречает молодых хакеров и бывает поражён, насколько мало трюков они знают.

Мигель де Икаса рекомендует ликбез по-быстрому:

1. Прочитать «Unix. Программное окружение» Кернигана и Пайка [русское издание], займёт несколько дней, от силы неделю. Книжка очень старая (1984), но лучше всех разъясняет автоматизацию различных действий в консоли. Вторая книжка — UNIX for the Impatient, чтобы прокачать навыки.
Читать дальше →
Всего голосов 89: ↑75 и ↓14+61
Комментарии110

Распознавание некоторых современных CAPTCHA

Время на прочтение15 мин
Количество просмотров78K
Именно так называлась работа, представленная мной на Балтийском научно-инженерном конкурсе, и принёсшая мне очаровательную бумажку с римской единичкой, а также новенький ноутбук.

Работа заключалась в распознавании CAPTCHA, используемых крупными операторами сотовой связи в формах отправки SMS, и демонстрации недостаточной эффективности применяемого ими подхода. Чтобы не задевать ничью гордость, будем называть этих операторов иносказательно: красный, жёлтый, зелёный и синий.

Читать дальше →
Всего голосов 319: ↑313 и ↓6+307
Комментарии148

java.util.concurrent. Часть первая: Зачем и почему?

Время на прочтение4 мин
Количество просмотров28K
Часть первая, в которой множеством слов раскрывается смысл существования этого API
Эта статья, хоть и не является прямым переводом, основана на статье Брайана Гетца Concurrency in JDK 5.0

Читать дальше →
Всего голосов 49: ↑39 и ↓10+29
Комментарии29

Кодировки

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

Всем рано или поздно приходится работать с различными кодировками. Заметив в коде своей команды различные, порой странные, подходы к решению этих проблем, пришлось провести разъяснительную беседу. Ниже поделюсь своим видением правильной работы с не-ASCII символами в коде. Буду рад конструктивной критике.

Читать дальше
Всего голосов 76: ↑73 и ↓3+70
Комментарии61
1

Информация

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