Как стать автором
Обновить
2
@cl0neread⁠-⁠only

read-only из-за несогласия с ватниками

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

Про догмы в криптографии

Время на прочтение7 мин
Количество просмотров8.9K
Вчера я наконец-то выпустил первую публичную версию Lamer News, это одновременно и реальный пример использования Redis в виде сайта напободие Hacker News, и проект совершенно независимого сайта про новости из мира программирования.

Проект был хорошо принят сообществом, и был в топе HN в течение некоторого времени. Спасибо за обратную связь.

После релиза я получил несколько просьб об изменении хэш-функции, которую я использовал для того, чтобы хэшировать пароли в БД:

# Turn the password into an hashed one, using
# SHA1(salt|password).
def hash_password(password)
    Digest::SHA1.hexdigest(PasswordSalt+password)
end


Этот код использует SHA1 с солью. Как отметили читатели, это не самый безопасный выбор, поскольку есть способы вычислить SHA1 очень быстро. Через некоторое время люди хором начали твитить и писать в комментах одно и то же предложение: «используй BCrypt». Я предложил использовать вложенные SHA1 в цикле, чтобы избежать добавления новых зависимостей в коде (если вы проверите README, одной из целей является сделать код простым и с как можно меньшим количеством зависимостей). И тут это случилось: догма шифрования. Никаких рассуждений о криптопримитивах и их возможных применениях и комбинациях, просто тупо «используй BCrypt». В глазах этих товарищей программисты — просто тупые дроны, исполняющие гайдлайны, которые не могут ни в коем случае рассуждать о криптографии. Но об этом позже…

Давайте пока сделаем шаг назад и рассмотрим исходную проблему со всем этим, и насколько небезопасен этот код.
Читать дальше →
Всего голосов 172: ↑161 и ↓11+150
Комментарии99

Стратегия оптимизации веб-проекта с использованием MySQL

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

Введение


В жизни любого крупного веб-проекта, особенно на PHP, но, в целом, это касается любого серверного ЯП, пригодного для веб-разработки, обычно наступает понимание, что «так дальше жить нельзя», и что настал момент, когда нужно провести оптимизацию работы сайта, чтобы он перестал тормозить (хотя бы на production).

Интересно, что, как правило, даже тяжелые фреймворки (вроде Symfony или RoR) на «медленных» языках, в production-окружении работают достаточно сносно по скорости, а основные «тормоза» вызываются SQL-запросами и неграмотным кешированием (к примеру, инициализация достаточно сложной и большой конфигурации проекта на Symfony занимает около 80 мс, а времена исполнения страницы, при этом, иногда достигают секунды и более).

Если вы смогли определить, что это — ваш случай, и ваш проект на MySQL, то эта статья может вам помочь принять конкретные меры и исправлению ситуации с закреплением результата и предотвращением возникновения откровенных проблем с СУБД впоследствии.
Читать дальше →
Всего голосов 102: ↑90 и ↓12+78
Комментарии81

Кластер, который всегда с собой

Время на прочтение5 мин
Количество просмотров40K
lxcЗахотелось странного.
Во-первых, взгромоздить кучу виртуальных машин прямо на свой ноутбук.
А во-вторых, раскурить одну виртуализацию внутри другой.

Речь пойдет про использование контейнеров LXC, причем внутри другой виртуальной машины.

WTF! На кой это нужно?
Всего голосов 131: ↑126 и ↓5+121
Комментарии58

Коды возврата vs исключения — битва за контроль ошибок

Время на прочтение7 мин
Количество просмотров22K
Судя по всему, неделя исключений на хабре успешно наступила :). Накопив достаточную «подушку» кармы чтобы не бояться уйти в минус, я, пожалуй, тоже выскажу свое мнение по данному вопросу. Сразу оговорюсь, что мнение сугубо личное, основанное на небольшом практическом опыте коммерческой разработки: C++, Objective-C, C#, Java, Python, Ruby.
Под катом много текста, фрагментов кода и нет картинок O_O
Всего голосов 111: ↑100 и ↓11+89
Комментарии159

Обзор двадцати двух бесплатных шрифтов с сайта Open Font Library: 16 шрифтов с кириллицею + 6 орнаментальных и спецсимвольных шрифтов

Время на прочтение4 мин
Количество просмотров62K
Сегодня я упоминал ужé о трудностях, с которыми сталкивается всякий, кто желает разыскать на сайте Open Font Library шрифты с поддержкою кириллицы. Фильтра по языкам нет; поиск по слову «cyrillic», как dimitrymd успел убедиться, находит только десяток шрифтов.

Я ощущаю поэтому, что есть смысл составить да выложить более полный список тамошних шрифтов, имеющих поддержку кириллицы. Порядок шрифтов будет алфавитным:

  1. ConsolaMono
  2. Crimson
  3. Dataface
  4. Designosaur
  5. Didact Gothic
  6. GNUTypewriter
  7. Grana Padano
  8. Jura
  9. Neocyr
  10. NotCourierSans
  11. Old Standard
  12. Pfennig
  13. Press Start 2P
  14. Sansus Webissimo
  15. Triod Postnaja
  16. VDS

«На закуску» я намерен также обозреть полдюжины шрифтов с различными спецсимволами да орнаментами:

  1. Chess
  2. FivefoldOrnamentsEtc
  3. Futhark Adapted
  4. Knots
  5. UniCons
  6. Web Symbols

Читать дальше →
Всего голосов 183: ↑160 и ↓23+137
Комментарии51

Дизайн сайта Open Font Library переменился

Время на прочтение2 мин
Количество просмотров2K
Внешний вид сайта openfontlibrary.org, созданного Libre Font Fund для хранения и распространения свободных шрифтов (прежде всего в интересах пользователей TeX, но также и в интересах общественного блага), обрёл в последний год существенные изменения. Также изменились элементы его внутреннего устройства, наполнения и функционирования — всё то, что мы называем дизайном.

Прежде на сайте были просто списки шрифтов, а теперь они стали функционально сложнее и полезнее.

Заметно прежде всего, что название каждого шрифта теперь отображается самим же этим шрифтом. (К сожалению, при этом используется сырой шрифт в формате TTF или OTF. Формат WOFF был бы примерно вчетверо меньше по объёму, способствуя более экономному скачиванию шрифтов, более быстрому отображению названий.)

Для каждого из шрифтов появилось тестовое поле, позволяющее набрать произвольный текст и поглядеть (прямо на сайте), как он будет выглядеть. В отличие от сайта Typekit, на котором у меня в тестовом поле не заработал русский текст, Open Font Library позволяет тестировать кириллицу невозбранно. К сожалению, недостаёт такого ползунка или выпадающего списка, который позволил бы контролировать размер шрифта — а меж тем было бы полезно проверять шрифты не только в крупном размере (в котором наилучшим образом видны очертания шрифта), но также и в небольшом (для оценки пригодности шрифта к оформлению основного текста сайтов).

Читать дальше →
Всего голосов 35: ↑24 и ↓11+13
Комментарии3

Три ребуса-мутанта для ИТшников

Время на прочтение1 мин
Количество просмотров1.2K
Прошлый ребус для программистов на Хабре разгадали примерно за час. Посмотрим, как вы справитесь с ребусами-мутантами. В них осталось не очень-то много от ребуса, но программисты привыкли решать непонятные задачи!

1. Домашний борщ




Читать дальше →
Всего голосов 34: ↑28 и ↓6+22
Комментарии30

Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

Время на прочтение5 мин
Количество просмотров173K
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и обкурилисьчитались LFS и теперь решили под свою хтоническую систему скомпилять их творение. А make install является универсальным, хоть и зачастую неправильным способом это сделать.

Читать дальше →
Всего голосов 385: ↑339 и ↓46+293
Комментарии186

GnuPG на смарт-картах. Как это выглядит…

Время на прочтение4 мин
Количество просмотров8.7K
image
Почти все знают что такое GPG. Многие им пользуются. Некоторые даже в курсе, что есть возможность хранить секретные ключи на внешнем носителе типа смарт-карты. Я-же хочу описать как это все выглядит на практике.

Несколько дней назад ко мне приехала пара «OpenPGP SmartCard v2». Заказаны они были у официального их распространителя — shop.kernelconcepts.de/index.php?language=en. Цена одной карты на данный момент составляет 17.14 евро. Две заказанные карты были отправлены чем-то вроде заказного письма и пересылка обошлась мне в 5 евро, что очень даже неплохо. Еще порадовало что карты без проблем прошли через таможню. Не уверен что так будет с большим количеством, но для личного использования, думаю, можно заказывать достаточно безопасно.

И вот они у меня...
Всего голосов 39: ↑37 и ↓2+35
Комментарии34

Приучаем винтажные американские часы кормиться от нашей сети

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

Вместо предисловия




Кто не мечтал о таких часах после просмотра любимого фильма GTD-шников, может дальше не читать. А остальным я расскажу как заполучить себе такие часы и заставить их работать.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии41

Во всей Вселенной — только одна пиктограмма облака

Время на прочтение1 мин
Количество просмотров14K
Один из известных разработчиков Microsoft Скорр Хансельман (Scorr Hanselman) опубликовал сообщение, в котором оправдывается по поводу изображения облака на сайте ASP.NET.



Он говорит, что после смены дизайна ASP.NET получил множество писем с подколками «классная иконка iCloud». Мол, выглядит очень похоже на пиктограмму Apple iCloud.



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

Неравномерно идущие часы

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

Идея этих часов состоит в том, что стрелки на них двигаются неравномерно, то ускоряясь, то отставая, но тем не менее, в среднем, часы показывают правильное время. Сейчас расскажу, как такие сделать.
Читать дальше →
Всего голосов 250: ↑241 и ↓9+232
Комментарии120

Защитите ваше право устанавливать бесплатное программное обеспечение

Время на прочтение2 мин
Количество просмотров2.6K
Нижеследующее является публичным заявлением, открытым для подписания. Для получения более подробной информации пожалуйста, прочитайте наше более развёрнутое описание проблемы по адресу fsf.org/campaigns/secure-boot-vs-restricted-boot.

Microsoft объявила, что если производители компьютеров хотят поставлять свою продукцию с логотипом совместимости с Windows 8, то они обязаны реализовать технологию под названием "Безопасная загрузка". Однако, в данный момент сомнительно, что эта технология будет соответствовать своему названию, т.к. скорее она заслужит имя "Ограниченная загрузка".

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

Эта технология будет соответствовать своему имени только если пользователь сможет самостоятельно подписывать программы, которые он хочет использовать, таким образом получив возможность запускать бесплатное программное обеспечение, написанное самостоятельно, или полученное от людей, которым он доверяет. Однако мы обеспокоены тем, что Microsoft и производители оборудования будут реализовывать эти ограничения загрузки так, чтобы не позволить запускать ничего, кроме Windows. В этом случае мы предпочитаем называть технологию "ограниченной загрузкой", так как такое требование накладывает катастрофические ограничение на пользователей, и в принципе не является средством обеспечения безопасности.

Пожалуйста, подпишите нижеследующее заявление, чтобы продемонстрировать производителям компьютеров, правительству и Microsoft, что вы заботитесь о своём праве выбора и готовы его отстаивать.
Читать дальше →
Всего голосов 174: ↑144 и ↓30+114
Комментарии171

Ребус для программистов

Время на прочтение1 мин
Количество просмотров3.2K
Решил дать инвайт на Хабр тому, кто разгадает ребус, но пока никто не разгадал. Видимо, перемудрил… Может, на самом Хабре кто-нибудь осилит?

image
Всего голосов 137: ↑115 и ↓22+93
Комментарии83

Реализация небольшого асинхронного сервера

Время на прочтение9 мин
Количество просмотров21K
Целью публикации данного топика является представление аудитории Хабрахабра кода небольшого асинхронного сервера, написанного на Питоне с использованием практически «голых» сокетов.

Мне приходилось писать достаточно много приложений, работающих в качестве сетевых сервисов. Эти сервисы были написаны на разных языках, под разную нагрузку и каждый раз реализация нового сервиса чем-то отличалась от предыдущей. Под хабракатом я привожу пример довольно удачной, на мой вгляд, реализации «учебного» сервера, сопровождая код своими комментариями по мере необходимости.
Читать дальше →
Всего голосов 46: ↑43 и ↓3+40
Комментарии26

GitLab: open source версия Github

Время на прочтение1 мин
Количество просмотров88K
Хотите поднять клон Github на своём собственном сервере с приватными репозиториями за корпоративным файрволом? Теперь вы можете это сделать благодаря появлению open source проекта GitLab. Он является хорошей альтернативой для корпоративной версии Github стоимостью до $5000 в год.

По сравнению с Gitorious, система GitLab отличается приятным интерфейсом и гораздо проще в установке.

13 октября вышла версия 1.0, через неделю обещают выкатить 1.1, а затем новые релизы GitLab 1.2, 1.3 и т.д. будут выходить каждый месяц.
Читать дальше →
Всего голосов 98: ↑95 и ↓3+92
Комментарии62

«Правильная» utf-8 кодировка в настройках nginx/apache

Время на прочтение3 мин
Количество просмотров97K
Надеюсь, что данный пост окажется полезным многим разработчикам, т.к. судя по многочисленным тредам в интернете, проблема-то довольно частая. Суть проблемы в следующем: неправильное наименование кодировки utf-8 в настройках nginx/apache. При этом отдаваемый сервером контент воспринимается нормально во всех браузерах, кроме Internet Explorer-a.
Читать дальше →
Всего голосов 163: ↑143 и ↓20+123
Комментарии72

Арифметическое кодирование

Время на прочтение3 мин
Количество просмотров99K
Сейчас существует множество алгоритмов сжатия информации. Большинство из них широко известны, но есть и некоторые весьма эффективные, но, тем не менее, малоизвестные алгоритмы. Эта статья рассказывает о методе арифметического кодирования, который является лучшим из энтропийных, но тем не менее мало кто о нём знает.
Читать дальше →
Всего голосов 71: ↑62 и ↓9+53
Комментарии39

Tactoom.com изнутри — социальная блог-платформа на NodeJS/NoSQL

Время на прочтение7 мин
Количество просмотров6.5K
Tactoom.com - under the hoodИтак, пришло время раскрыть некоторые карты и рассказать о том, как устроен Tactoom изнутри.

В этой статье я расскажу о разработке и выведении в production веб-сервиса с использованием:
NodeJS (fibers), MongoDB, Redis, ElasticSearch, Capistrano, Rackspace.
Читать дальше →
Всего голосов 174: ↑159 и ↓15+144
Комментарии76

PNG — not GIF!

Время на прочтение4 мин
Количество просмотров83K
Доброго времени суток!
Вам когда-нибудь хотелось узнать как устроены файлы PNG? Нет? А я все равно расскажу.
Формат PNG(Portable Network Graphics) был изобретен в 1995 году, чтобы стать заменой GIF, а уже в 1996, с выходом версии 1.0, он был рекомендован W3C, в качестве полноправного сетевого формата. На сегодняшний день PNG является одним из основных форматов веб-графики.

Под катом вы найдете общее описание строения PNG-файла, некоторое количество картинок-схем, препарирование в hex-редакторе, и, конечно, ссылку на спецификацию.
Читать дальше →
Всего голосов 199: ↑191 и ↓8+183
Комментарии78

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Зарегистрирован
Активность

Специализация

Software Developer, Backend Developer
Middle
Python
Erlang
Linux
Git
SQL
Docker