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

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

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

Архитектура open source-приложений: Как работает nginx

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


Мы в «Латере» занимаемся созданием биллинга для операторов связи и рассказываем на Хабре о разработке своего продукта, а также публикуем интересные технические переводные материалы. И сегодня мы представляем вашему вниманию адаптированный перевод одной из глав книги «Архитектура open-source-приложений», в которой описываются предпосылки появления, архитектура и организация работы популярного веб-сервера nginx.
Читать дальше →
Всего голосов 36: ↑31 и ↓5 +26
Комментарии 10

Пятничный формат: Как писать код, который никто не сможет сопровождать

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


Благодаря советам экспертов в области Java вы научитесь писать код, который будет настолько сложно сопровождать, что любому, кто будет с ним работать после вас, потребуются годы, чтобы внести даже малейшие правки. Более того, если будете неизменно следовать этим правилам, вы сможете гарантировать себе пожизненное рабочее место, так как никто кроме вас не сможет разобраться в вашем коде.
Читать дальше →
Всего голосов 89: ↑74 и ↓15 +59
Комментарии 119

Рентабельный код 2: крадущийся DDD, затаившийся CQRS

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

Трем программистам предложили пересечь поле, и дойти до дома на другой стороне. Программист-новичок посмотрел на короткую дистанцию и сказал, «Это не далеко! Это займет у меня десять минут». Опытный программист посмотрел на поле, немного подумал, и сказал: «Я мог бы добраться туда за день». Новичок посмотрел на него с удивлением. Гуру-программист посмотрел на поле и сказал. «Кажется минут десять, но я думаю пятнадцати будет достаточно». Опытный программист рассмеялся.

Программист-новичок двинулся в путь, но в течение нескольких мгновений, начали взрываться мины, оставляя после себя большие ямы. От взрывов он отлетал назад, и ему приходилась начинать сначала снова и снова. У него ушло два дня чтобы достичь цели. К тому же он весь трясся и был ранен, когда пришел.

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

Гуру программист пустился в путь, и пошел прямо через поле. Целеустремленно и прямо. Он достиг цели всего за десять минут.
«Как тебе это удалось?» — спросили двое других — «Как ты умудрился не зацепить ни одной мины?»
«Легко» — ответил он. «Я не закладывал мины на своем пути».

Как ни прискорбно, придется признать – мы сами закладываем себе мины. В первой части я подробно разобрал основные риски в разработке ПО и описал технологические и методологические способы ослабления этих рисков. За прошедший год я получил множество комментариев, основной смысл которых сводился к следующему: «все круто, но с чего начать и как все это будет выглядеть в реальном мире». Действительно, первый текст носит скорее теоретический характер и представляет собой каталог ссылок. В этой статье я постараюсь привести как можно больше примеров.
Читать дальше →
Всего голосов 30: ↑27 и ↓3 +24
Комментарии 19

Как определить дубликаты картинок с помощью PHP

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



Потому рано или поздно встает вопрос автоматизации процесса поиска повторов, и тут мы рассмотрим основные, а также попробуем в деле.
Читать дальше →
Всего голосов 45: ↑37 и ↓8 +29
Комментарии 24

Реактивное программирование в табличном процессоре

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


Табличный процессор (речь идет о MS Excel или LibreOffice Calc) — это довольно занятный и универсальный инструмент. Мне часто приходилось (и приходится) пользоваться его широкими возможностями: автоматизированные отчеты, проверка гипотез, прототипирование алгоритмов. Например, я использовал его для решения задач проекта Эйлер, быстрой проверки алгоритмов, реализовал парсер одного прикладного протокола (по работе надо было). Мне нравится наглядность, которую можно добиться в табличном процессоре, а еще мне нравится нестандартное применение всего, чего только возможно. На Хабре уже появлялись интересные статьи на тему нестандартного применения Excel:
«Assembler в 30 строк на Excel»
Чем заняться айтишнику в армии или как я на VBA игры писал
«RPG-игра в рабочей книге Excel»

В этой длинной статье я хочу поделиться своими экспериментами в реактивном программировании с помощью формул табличного процессора. В результате этих экспериментов у меня получился «компьютер» с процессором, памятью, стеком и дисплеем, реализованный внутри LibreOffice Calc при помощи одних только формул (за исключением тактового генератора), который можно программировать на неком подобии ассемблера. Затем, в качестве примера и proof-of-concept, я написал игру «Змейка» и бегущуюползущую строку для этого компьютера.
Читать дальше →
Всего голосов 76: ↑76 и ↓0 +76
Комментарии 12

Философия программирования — трёхнаправленное программирование

Время на прочтение 11 мин
Количество просмотров 104K
Программирование рассматривается как процесс создания компьютерных программ. Слово процесс в этом определении не лишнее. Обычно рассуждают в духе «посмотрите, какую замечательную структуру данных можно описать на данном языке программирования». Философия программирования подразумевает оглянуться по сторонам, да и в глубь копнуть.

Собственно разделение на кодирование, и создание алгоритмов это уже специфика, сначала идёт жизнь, то есть человек опирается на некую мысль вроде «напишу-ка я фреймворк с такими-то свойствами». И вот это начальное направление это вопрос философии. Проблема в том, что часто жена программиста лучше его самого знает, на философском уровне, что он делает и почему. Элементарные философские категории: мышление, сознание, обусловленность программисту неведомы. И это странно, если сравнить способность программиста мыслить, например, читая статьи по функциональному программированию или алгоритмам поиска, вперемешку со статьями видных русских или европейских философов, окажется, что собственно навык мышления у программистов развит не меньше, а то и больше. Вот только язык программиста очень богат пока он рассуждает о паттерн-матчинге и жалок и органичен когда ему надо выйти из своей песочницы, оторваться от IDE и файлового менеджера.
Читать дальше →
Всего голосов 76: ↑57 и ↓19 +38
Комментарии 87

Установка, настройка и тестирование Fedora 21 Workstation на личном или игровом компьютере

Время на прочтение 37 мин
Количество просмотров 203K
9-го декабря вышла новая Fedora 21 Workstation, которую по совокупности параметров можно назвать «самым свежим и стабильным» Линукс-десктопом.

За время использования и тестирования Fedora я проникся к этой платформе глубокой симпатией и хочу поделиться этим теплом и знаниями о ней с вами.

В течение года я наблюдал за её работой в качестве рабочего и игрового места в разных ситуациях — от станций с «умирающим» железом до нового игрового ноутбука Asus G750JM с Nvidia Optimus.

Собранные заметки получились несколько шершавыми, старающимися охватить одновременно и новичков в Линуксе, и опытных пользователей с разработчиками. Прошу простить. Хочу донести большой объем информации в одной статье: и по общей настройке и установке Федоры, и по технологии Nvidia Optimus на ноутбуках, wi-fi с проприетарными драйверами, о настройке симпатичных шрифтов в Java и IDE от JetBrains, запуску игр в Steam на дискретной видеокарте, о результатах сравнительного тестирования игр, графики и браузеров между Федорой и Windows 8.1, и даже об установлении одного «абсолютного» рекорда.

Хочу отметить, что свежие десктопные Линуксы также отличаются качественной поддержкой дисплеев высокого разрешения с хорошей отрисовкой шрифтов и оконных элементов, предоставляют высочайшую степень различных персональных настроек, «хаков» и возможностей оперирования с приложениями. Всё это позволяет не только значительно повысить эффективность своей работы, но и сделать это с комфортом для глаз.

Читать дальше →
Всего голосов 55: ↑49 и ↓6 +43
Комментарии 44

Обработка и оформление отчетов в Excel на PHP

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

Не редко при разработке некоего проекта, возникает необходимость в формировании отчетной статистики. Если проект разрабатывается на Delphi, C# или к примеру, на С++ и под Windows, то тут проблем нет. Всего лишь необходимо воспользоваться COM объектом. Но дела обстоят иначе, если необходимо сформировать отчет в формате excel на PHP. И чтобы это творение функционировало на UNIX-подобных системах. Но, к счастью, не так все плохо. И библиотек для этого хватает. Я свой выбор остановил на PHPExcel. Я уже пару лет работаю с этой библиотекой, и остаюсь доволен. Поскольку она является кроссплатформенной, то не возникает проблем с переносимостью.


PHPExcel позволяет производить импорт и экспорт данных в excel. Применять различные стили оформления к отчетам. В общем, все на высоте. Даже есть возможность работы с формулами. Только необходимо учитывать, что вся работа (чтение и запись) должна вестись в кодировке utf-8.

Читать дальше →
Всего голосов 40: ↑33 и ↓7 +26
Комментарии 28

PHPUnit: Mock объекты

Время на прочтение 7 мин
Количество просмотров 91K
Довольно часто при написании модульных тестов нам приходится сталкиваться с тем, что тестируемый класс зависит от данных из внешних источников, состояние которых мы не можем контролировать. К таким источникам можно отнести далеко расположенную общедоступную базу данных или службу, датчик какого-нибудь физического процесса и пр. Либо нам необходимо убедиться, что некие действия выполняются в строго определенном порядке. В этих случаях к нам на помощь приходят Mock объекты (mock в переводе с английского — пародия), позволяя тестировать классы в изоляции от внешних зависимостей. Использованию Mock объектов в PHPUnit посвящается эта статья.
Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Комментарии 7

Незаметные сложности ракетной техники

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

Строительство и эксплуатация ракет-носителей — это своеобразная «черная команда» космонавтики. Большая и сложная работа делается незаметно, а большинство лавров достаются разработчикам полезной нагрузки. Мы забыли о сложности задач, которые решаются при проектировании и производстве ракет-носителей. Эта статья призвана показать важность темы и представить небольшой ликбез тем, кто хотел бы узнать, «как оно летает».
Читать дальше →
Всего голосов 248: ↑247 и ↓1 +246
Комментарии 285

Правда о Мариссе Майер: неофициальная биография [вступление]

Время на прочтение 6 мин
Количество просмотров 72K
Несколько примечаний: во-первых, огромная благодарность хабрапользователю HotWaterMusic за львиную часть работ, связанных с переводом, которые он выполнил. Во-вторых, сейчас ни у него, ни у меня нету возможности продолжать перевод — а это еще около 70 страниц формата A4. Если кто-то вдруг захочет взятся за это, просьба написать мне в личку, чтобы я знал, что есть желающие. Либо создайте ветку комментариев, чтобы желающие могли в ней скоординироваться.

image

Теплым летним утром, 12 июля 2012 года, временный CEO Yahoo Росс Левинсон все еще верил в то, что он станет постоянным гендиректором компании.

Оставалось всего одно собрание до его ухода.

Это было заседание совета директоров, которое должно было пройти в огромном конференц-зале на первом этаже штаб-квартиры Yahoo в Саннивейл, Калифорния. В Yahoo эту комнату называли “Phish Food (прим. перев: особое мороженое с печеньем в виде рыб)” – это была стильная комната, до верху набитая стеклом, диванами из белой кожи и стульями.

Повесткой дня было следующее: Левинсон представляет свой план относительно Yahoo, после чего становится постоянным CEO.
Читать дальше →
Всего голосов 78: ↑62 и ↓16 +46
Комментарии 53

ИИ — Гедель против Тьюринга или критика искусственного разума. Точка зрения технаря

Время на прочтение 5 мин
Количество просмотров 20K
Десять лет назад я считал изложенные в данной публикации мысли достаточно банальными. Прочитав последние публикации на Хабре [1] я понял что это не так.

Термин “Искусственный интеллект” может быть великолепной иллюстрацией понятия прецессии симулякров. Его значение меняется каждый год, в зависимости от настроений рынка или моды философов-гуманитариев. Десятилетия назад шахматная программа считалась ИИ. Сегодня это банальный инжиниринг. Через десятилетия Ватсон и Сири будут стандартной компонентой в очередном фреймворке. ИИ — символ непознанного, как только мы отщипываем кусочек неизвестного — оно сразу теряет свою привлекательность.
Однако если забыть гуманитарные установки и подойти к делу с точки зрения технаря можно понять следующие вещи.
Читать дальше →
Всего голосов 74: ↑65 и ↓9 +56
Комментарии 97

Онлайн размещение документов на сайте

Время на прочтение 3 мин
Количество просмотров 23K
В наше время, когда Интернет широко шагает по стране, компании все чаще создают собственные сайты. Почти на каждом присутствует информация о ценах на продукцию, услуги и т.д., проще говоря – прайсы. Зачастую прайсы сразу сверстаны в html страницу или дается ссылка на их скачивание. В первом случае хорошо, если на сайте установлена CMS и можно редактировать страницы, а если нет? Во втором, нужно закачать прайс по ftp. Оба случая могут явиться камнем преткновения при обновлении прайса на сайте, если нет собственного вебмастера. Да и копирование информации из готового прайса на сайт, может привести к неточностям и ошибками, особенно если прайс не маленький. А это чревато потерей клиентов. Рассмотрим, как упростить размещение прайсов online. Сразу оговорюсь, что рассматривать мощные системы, где CMS сайта взаимодействует с бухгалтерией компании я не буду.
Читать дальше →
Всего голосов 72: ↑66 и ↓6 +60
Комментарии 31

По следам интеллекта

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

По следам интеллекта


С момента первых попыток моделировать процессы, протекающие в человеческом мозге, наука прошла множество ступенек приближающих нас к ИИ. Но мозг человека, совершает пока что неподъемную и слабо отслеживаемую работу по непрерывной обработке потока сенсорной информации. Я попытаюсь осмысленно рассказать основные вехи эволюции искусственных нейронных сетей (ИНС).
Читать дальше →
Всего голосов 48: ↑39 и ↓9 +30
Комментарии 68

Автоматическая посадка стотонного утюга или А с кем работаете Вы?

Время на прочтение 6 мин
Количество просмотров 9.9K
Продолжу «космическую» тему в своих постах. На этот раз хочу рассказать об одном малоизвестном аспекте программы «Энергия — Буран», а именно — о системе автоматической посадки орбитального корабля.

Кратко о программе


imageО программе «Энергия — Буран» написано немало, я бы порекомендовал всем интересующимся сразу отправиться на специальный сайт buran.ru, на котором очень много достоверной информации.

Если вкратце резюмировать, то программа «Энергия — Буран» предусматривала создание универсальной тяжелой ракеты-носителя «Энергия» стотонного класса и, в качестве полезной нагрузки для нее — орбитального многоразового корабля «Буран».

Корабль «Буран» во многом был аналогом американской системы Space Shuttle: крылатый и бесхвостый планер, плиточная теплозащита, грузовой люк, сходные массо-габаритные параметры (вывод 30 тонн и возвращение с орбиты 20 тонн груза, экипаж до 7 космонавтов), но, поскольку техника не стоит на месте, а наш корабль разрабатывался позже, имел и существенные отличия. «Буран», в отличие от американского аналога, был изначально предназначен для стыковки с орбитальными станциями и другими кораблями, имел систему спасения экипажа (ее отсутствие погубило в свое время экипаж «Челленджера»), и, самое главное — мог выполнять задачи выхода в космос, работы на орбите и посадки в полностью автоматическом режиме.

Читать дальше →
Всего голосов 173: ↑169 и ↓4 +165
Комментарии 184

Подключаемся к камерам наблюдения

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

Зачем нужны камеры наблюдения? Правильно — чтобы наблюдать за происходящим и контролировать ситуацию! В наше неспокойное время эти самые камеры развешаны повсюду — от денежных хранилищ до придорожных кафе. Однако защищая свои владения, хозяева порой забывают о защите самой камеры путем банальной установки пароля на доступ из Интернета. И очень зря. Если пароль не установить — ваша камера «безопасности» превращается в публичную вэб-камеру с реалити шоу для всех желающих.
Читать дальше →
Всего голосов 258: ↑245 и ↓13 +232
Комментарии 133

50 цитат о программировании всех времён

Время на прочтение 6 мин
Количество просмотров 158K
Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

50. Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает.
— Rick Cook

49. Lisp — это не язык, а строительный материал.
— Alan Kay

48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
— Edward V Berard
Читать дальше →
Всего голосов 344: ↑336 и ↓8 +328
Комментарии 136

Синхронизируемся: рецепты для работы на нескольких компьютерах

Время на прочтение 5 мин
Количество просмотров 14K
Недавно столкнулся со следующей задачей: дома три компьютера и работать случается на каждом из них. При этом захотелось раз и навсегда забыть о необходимости ручной синхронизации файлов между компьютерами. Компьютер на работе также захотелось включить в процесс синхронизации. А заодно решить, как сделать синхронизацию коммуникатора независимой от конкретного компьютера.
Полученное решение описано в виде рецептов.
читать дальше
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 15

Информация

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