Как стать автором
Поиск
Написать публикацию
Обновить
0
ignar @ignarread⁠-⁠only

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

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

Сон и продуктивная деятельность

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

Вступление


Доброго времени суток, %habrauser%! Думаю, в этой статье я не открыл ничего нового. Просто меня самого заинтересовала тема продуктивного сна. Несколько последних лет я был приверженцем мнения, что сон – это бесполезная трата времени, к сожалению необходимая организму. И посему, я максимально старался сократить время сна. Но чем больше я это делал, тем больше я начинал походить на зомби. И тогда я стал искать альтернативу. И результатом обобщения всей найденной мной информацией и стала эта статья. Итак, поехали!
Читать дальше →

О принятии решений пользователем

Время на прочтение3 мин
Количество просмотров1.2K
В одном из недавних обсуждений я столкнулся, как мне показалось, с одним распространенным мнением касательно отношений между пользователями и разработчиками. По большой части это касается ответственности первых и вторых, а если быть еще точнее — оформления форм и взаимодействия пользователей с этими формами.

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

Полезные инструменты, туториалы и ресурсы

Время на прочтение4 мин
Количество просмотров16K
Созданый Райаном Далем в 2009 году, Node.js — относительно новая технология, завоевавшая в последнее время большую популярность среди веб-разработчиков. Однако, до сих пор не каждый знает, что на самом деле Node.js это серверная JavaScript среда, использующая асинхронную событийную модель. Что это означает? Все просто: это среда, которая предназначена для написания масштабируемых, высокопроизводительных приложений. Почти как Ruby’s Event Machine или Python’s Twisted, но гораздо глубже — JavaScript реализовывает цикл событий, на уровне самого языка, а не как отдельная библиотека.



И это еще не все: то, что действительно круто в Node.js — это тысячи модулей, доступных для любых целей, а также активниешее сообщество этого молодого проекта. В этом обзоре вы найдете самые полезные ресурсы по Node.js, от просто удобных инструментов и подробных руководств, до углубленных статей и ресурсов о этой перспективной технологии. Используете ли вы Node.js? Поделитесь опытом в комментариях к этотому посту!

Читать дальше →

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

Время на прочтение7 мин
Количество просмотров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». В глазах этих товарищей программисты — просто тупые дроны, исполняющие гайдлайны, которые не могут ни в коем случае рассуждать о криптографии. Но об этом позже…

Давайте пока сделаем шаг назад и рассмотрим исходную проблему со всем этим, и насколько небезопасен этот код.
Читать дальше →

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

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

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

Читать дальше →

Английский для айтишника? Легко!

Время на прочтение2 мин
Количество просмотров183K
Эта тема не относится к IT напрямую, но все знают, что без нее никуда. К сожалению, далеко не у всех есть возможность изучать английский с преподавателями. Ну что ж, попробуем заняться этим дома и с максимальной отдачей!
Читать дальше →

Подборка видео с различных конференций

Время на прочтение2 мин
Количество просмотров4.3K
На конференции попасть получается не всегда, а умных людей послушать хочется. Решил собрать воедино скопившиеся ссылки на видеоматериалы. Надеюсь кому то пригодится.

Известные
Читать дальше →

Dojo-виджет своими руками

Время на прочтение3 мин
Количество просмотров2.9K
Доброго времени суток всем читателям! В данном топике я поделюсь своим опытом создания виджетов на Dojo на примере числового LED-индикатора (часов, таймера и пр.). Я не буду углубляться в историю создания фреймворка и теорию — топик носит практический характер.
Итак, начнём.
Читать дальше →

Свой инструмент нужно знать в лицо: обзор наиболее часто используемых структур данных

Время на прочтение8 мин
Количество просмотров65K
image
Некоторое время назад я сходил на собеседование в одну довольно большую и уважаемую компанию. Собеседование прошло хорошо и понравилось как мне, так и, надеюсь, людям его проводившим. Но на следующий день, в процессе разбора полетов, я обнаружил, что в ходе собеседования ответ на как минимум один вопрос был неверен.

Вопрос: Почему поиск в python dict на больших объемах данных быстрее чем итерация по индексированному массиву?

Ответ: В dict хранятся хэши от ключей. Каждый раз, когда мы ищем в dict значение по ключу, мы сначала вычисляем его хэш, а потом (внезапно), выполняем бинарный поиск. Таким образом, сложность составляет O(lg(N))!

На самом деле никакого бинарного поиска тут нет. И сложность алгоритма не O(lg(N)), а Amort. O(1) — так как в основе dict питона лежит структура под названием Hash Table.

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

Защищенный канал передачи данных с помощью самоподписанных SSL-сертификатов и Stunnel

Время на прочтение4 мин
Количество просмотров34K
Доброго времени суток, %username%!

Рано или поздно ко всем администраторам сети приходит руководство, и просит сделать доступ к внутренним ресурсам сети компании через Интернет. Руководству, чрезвычайно приятно попивая сок, на Мальдивских берегах, мониторить прогресс решения поставленных задач в корпоративной системе управления проектами. Вот и становиться задача организации доступа.
Читать дальше →

Безопасное хранение паролей

Время на прочтение2 мин
Количество просмотров44K
imageИнтернет прочно вошёл в нашу жизнь. Все мы, даже совсем неблизкие к IT люди, пользуемся большим количеством самых разнообразных сервисов, начиная от почты и заканчивая социальными сетями. Практически все сервисы требуют регистрации. Но для обеспечения безопасности использовать нужно разные пароли, состоящие из многих символов. Ну большинство людей, пользующихся интернетом, знают о требованиях к безопасным паролям. Но тут возникает одна небольшая проблема: как запомнить все эти множества паролей?
Читать дальше →

Избегаем распространенных ошибок в HTML5 разметке

Время на прочтение8 мин
Количество просмотров120K
HTML5 Уважаемые хабровчане, представляю вам вольный перевод статьи Avoiding common HTML5 mistakes. Здесь мы рассмотрим частые ошибки в HTML5 разметке с точки зрения семантики, и как их избежать.
Читать дальше →

10 способов улучшить свои навыки программирования

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

1. Выучить новый язык программирования


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

Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp (или Scheme), Форт, PostScript или Factor (стековые языки программирования), Haskell (строго типизированный, чистый функциональный язык) либо OCaml (объектно-ориентированный язык функционального программирования), Пролог (логическое программирование), Erlang (отличные паралельные вычисления).

Читать дальше →

Почему девушки не играют в видео игры?

Время на прочтение11 мин
Количество просмотров47K
Хотела написать что-то умное, но потом решила схалявить, так что поговорим вот о чём — почему же у нас девушки не играют в компьютерные игры? Нет, некоторые, конечно, могут и сильному полу фору дать в какой-нибудь стрелялке. Но чаще всего это не так. Девушка самозабвено и с предвкушением выбирающая в магазине очередной шутер, или пусть даже РПГ, или вообще какую-то игру — редкое зрелище. Почему?
Мне вот как-то говорили даже, что был такой доклад на КРИ — почему девушки не играют. Сказали, доклад был странный, и какой-то феминистически настроенный, с главным месседжем — девушки не играют потому, что игры делают тупые мужики. Ну это со слов очевидцев, сама я не берусь утверждать, был ли доклад плох или хорош — не присутсвовала.
И всё же подумалось, а кстати, почему не играют? Так я стала раскладывать всё по полочкам, и вырисовалась такая картинка.

Читать дальше →

Итерации длительностью в день — то, что доктор прописал

Время на прочтение3 мин
Количество просмотров2.6K
Я очень люблю паттерны. Нередко применяю идеи из одной сферы в другой — так, в тайм-менеджменте отлично работает принцип программирования KISS (keep it simple, stupid), равно как и DRY (don't repeat yourself).

image

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

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

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

Вместе с тем, многие пытаются управлять своим временем по «водопадной модели» — пишется план, а потом не корректируется. При этом план составляется сложнейший, на много дней вперед. И конечно, он либо проваливается полностью, либо выполняется на небольшой процент. Такие планы, как точно заметили ребята из 37signals, точнее называть догадками.

А как же писать планы, которые работают?
Читать дальше →

Принцип цикады и почему он важен для веб-дизайнеров

Время на прочтение6 мин
Количество просмотров237K
Пару лет назад я прочитал интересные факты о жизненном цикле периодических цикад. Обычно мы не видим вокруг себя много этих насекомых, потому что бóльшую часть своей жизни они проводят под землёй и тихо сосут корни растений.

Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
Читать дальше →

Оптимизируем процесс работы в консоли

Время на прочтение4 мин
Количество просмотров16K
Все привыкли редактировать текст в текстовых редакторах, блокнотах, веб-формах и т.д. В процессе набора текста мы пользуемся привычными стрелками, кнопками «End» и «Home», более опытные зажимают «Ctrl» и стрелками шагают по словам (что, кстати, не всегда работает). И при переходе на консоль мы ориентируемся на те же самые правила, даже не зная, что bash предлагает очень удобные средства и комбинации клавиш, которые очень упрощают работу и минимизируют количество операций для выполнения задачи. К тому же, в bash есть удобные средства работы с историей, масса различных подстановок и других интересных функций. Самые часто используемые мной и любым опытным администратором я и опишу в этой статье.
Читать дальше →

Пример использования хуков (hooks) в git

Время на прочтение2 мин
Количество просмотров37K
Для того чтобы познакомиться с механизмом хуков в git, достаточно просто начать их использовать и посмотреть как оно работает, и как оно устроено внутри.
Хуки в git это некие скрипты, срабатывающие на определенные события, по сути своей являются их обработчиками. Расположены они в каталоге .git/hooks.

простой пример обработчика...

Деревья, двоичные деревья

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

5й выпуск медленно, но двигающегося вперед видеопроекта Computer Science Student. На этот раз — небольшая «лекция» о такой структуре данных, как деревья.
Видео доступно в HD-качестве, но, как всегда, придется идти на vimeo.com.

Читать дальше →

Структуры данных: бинарные деревья. Часть 1

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

Интро



Этой статьей я начинаю цикл статей об известных и не очень структурах данных а так же их применении на практике.

В своих статьях я буду приводить примеры кода сразу на двух языках: на Java и на Haskell. Благодаря этому можно будет сравнить императивный и функциональный стили программирования и увидить плюсы и минусы того и другого.

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

Информация

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