Как стать автором
Обновить
4
0
Шаукат Амирханов @shaukote

Программирую пользовательские интерфейсы.

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

Настоящий Unix — не есть приемлемый Unix

Время на прочтение5 мин
Количество просмотров28K
Командная строка Unix полна сюрпризов. Например, вы знали, что инструмент ls, который чаще всего используется для получения списка файлов в текущем каталоге, в версии OS X распознаёт не менее 38 разных флагов?

Я не знал, так что затвитил этот факт. И получил парочку ответов, один из которых заставил меня задуматься: действительно ли саму Unix нужно винить в этом?

Насколько я знаю, ни Linux, ни OS X не были спроектированы в строгом соответствии с философией Unix. Будет лицемерием основывать критику “Unix” только на этих производных от Unix, которые есть у нас сегодня.

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

Но я немного опережаю события. Прежде чем я начну говорить об этом, давайте более пристально посмотрим на команду ls и попробуем выяснить, что конкретно она делает не так.
Читать дальше →
Всего голосов 44: ↑32 и ↓12+20
Комментарии116

Заблуждения программистов о телефонных номерах

Время на прочтение3 мин
Количество просмотров64K
Список составили разработчики Java, C++ и JavaScript библиотеки libphonenumber для парсинга, форматирования и проверки телефонных номеров

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

1. Телефонные номера, действительные сейчас, останутся действительными всегда. Телефонные номера определённого типа (например, мобильные), никогда не сменят тип.

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

Подсказка. Не сохраняйте свойства телефонного номера, такие как валидность или тип. Проверяйте эту информацию с помощью библиотеки, когда необходимо.
Читать дальше →
Всего голосов 35: ↑30 и ↓5+25
Комментарии24

Мифы о /dev/urandom

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

Наверняка многие из вас неоднократно сталкивались с мифами о /dev/urandom и /dev/random. Может быть, в некоторые из них вы даже верите. В этом посте мы сорвём покровы со всех этих мифов и разберём настоящие сильные и слабые стороны этих генераторов случайных чисел.
Читать дальше →
Всего голосов 73: ↑61 и ↓12+49
Комментарии8

Научные мифы, которые невозможно развенчать

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

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

В 1997 году врачи из юго-западной Кореи наладили практику ультразвукового обследования для выявления рака щитовидной железы на ранних стадиях. Известия о новой методике быстро распространились, и вскоре все врачи в регионе стали предлагать аналогичные услуги. В итоге, кампания приобрела общенациональный характер, а правительство инициировало программу ультразвуковой диагностики различных видов рака. Сотни тысяч добровольцев согласились пройти тесты всего за $30-50.

Число пациентов с диагностированным раком щитовидной железы в стране заметно возросло: с 5 случаев на 100000 человек в 1999 году до 70 на 100000 в 2011. У двух третей пациентов была удалена щитовидная железа, что привело к необходимости использования пожизненного медикаментозного лечения. А ведь оба варианта развития событий предполагали серьезные риски.

Казалось бы, столь масштабная и дорогостоящая программа в сфере общественного здравоохранения должна была спасти множество жизней. Но, увы. В настоящее время рак щитовидной железы – наиболее распространенная форма данного заболевания, диагностируемая в Южной Корее, а количество людей, умирающих от него ничуть не изменилось — около 1 100 000. Но даже когда некоторые местные врачи это заметили и в 2014 году озвучили мнение о том, что стоило бы прекратить обследования, Корейская ассоциация щитовидной железы, профессиональная организация эндокринологов и хирургов, возразила, заявив, что доступность специализированного УЗИ и лечения – неотъемлемые права человека.
Читать дальше →
Всего голосов 47: ↑33 и ↓14+19
Комментарии97

Я хочу, чтобы сайты открывались мгновенно

Время на прочтение10 мин
Количество просмотров139K
Здравствуйте, меня зовут Александр Зеленин и я веб-разработчик. Я расскажу, как сделать так, чтобы ваш сайт открывался быстро. Очень быстро.


Я хочу, чтобы мой сайт открывался быстро
Всего голосов 130: ↑122 и ↓8+114
Комментарии87

Персонажи сказок Старой Руси

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


Если вы регулярно читаете наш блог, то наверняка помните пост про создание собаченьки, персонажа мобильной игры «Эволюция». Нарисовал её (и написал пост) ведущий художник проекта Роман Amokrus Папсуев. Однако, как и все талантливые люди, Роман творит не только на работе, но и в свободное время — для души. Однажды ему пришла в голову идея перерисовать всем известных персонажей русских сказок и былин в современном игровом фэнтези-стиле. В результате получилась целая серия замечательных карандашных рисунков, выполненных с большим вниманием к деталям. Роман не руководствовался персонажами какой-то конкретной игры, образы получились собирательными. Впрочем, лучше сто раз увидеть, чем один раз прочитать.

Добро пожаловать под кат, его рассказ ждет вас там (также смотрите вторую часть). Много картинок внутри!
Читать дальше →
Всего голосов 149: ↑134 и ↓15+119
Комментарии126

Почему писать скрипты для борьбы с «браузером Амиго» — зло?

Время на прочтение9 мин
Количество просмотров80K
Прочитав пост про удаление ненужного софта мне в который раз стало очень грустно. Автор предлагает «эффективное решение» по избавлению от всякого нежелательного софта, вроде упомянутого «амиго». И если некоторые части скрипта еще можно назвать, ну хотя бы безвредными, то удаление и запрет на запись "%username%\AppData\Local\Apps" выглядит как откровенный саботаж. Плохо еще и то, что такой или аналогичный по механике «полезный скрипт» некоторые всерьез считают действенной мерой. Это далеко не первая статья, от которой у меня сводит скулы, вижу что многие не понимают с чего вообще нужно начинать настройку безопасности в Windows-среде.

Представляю читателям мое видение списка минимально необходимых настроек и действий (в первую очередь для Windows-домена), чтобы никогда не видеть непонятных браузеров и свести риск вредоносного ПО к абсолютному минимуму. Некоторые описанные решения могут показаться спорными, и мало того, они таковыми и являются. Но заранее прошу, увидев первое предложение какого-то пункта, не спешите писать комментарий, прочитайте мысль до конца, возможно у вас отпадут вопросы.
Почему я не знаю как выглядит браузер Амиго?
Всего голосов 90: ↑77 и ↓13+64
Комментарии203

400 потрясающих бесплатных сервисов

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

Рад представить дополнение оригинального списка из 300 потрясающих бесплатных сервисов. Автор оригинальной статьи Ali Mese добавил ещё +100 новых сервисов, которые помогут найти все — от источников вдохновения и редакторов фотографий до создания опросов и бесплатных иконок.

И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные веб-сайты

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly: Конструктор веб-сайтов.
  • Layers: Создание сайтов на WordPress (new).
  • Bootstrap Zero: Самая большая коллекция бесплатных шаблонов Bootstrap (new).
  • Landing Harbor:  Продвижение мобильного приложения c помощью бесплатного лендинга (new).
Читать дальше →
Всего голосов 108: ↑89 и ↓19+70
Комментарии38

Блок-схема для выбора STL-алгоритма

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


Третьего дня, во время сортировки старых закладок, попалась мне на глаза блок-схема с алгоритмом выбора STL-контейнера. «Почему же для контейнеров есть, а для стандартных алгоритмов нет? — подумал я. — Это необходимо исправить». Подумано — сделано. Сперва планировалось за пару часов нарисовать нечто простенькое, но в дальнейшем обнаружилось, что алгоритмы никак не хотят умещаться в простенькую схему. Я слегка увлекся, и спустя два вечера схема вобрала в себя 84 алгоритма, а также немного дополнительной информации. Под катом можно увидеть, что получилось в итоге.
Долой велосипеды!
Всего голосов 56: ↑52 и ↓4+48
Комментарии19

7 правил создания красивых интерфейсов

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


Недавно мы в «Я люблю ИП» закончили курсы по дизайну от trydesignlab.com. И это одна из самых важных статей, которую нам посоветовал ментор в процессе обучения. Именно поэтому мы решили её перевести. Посмотреть все наши работы с курсов можно в ВКонтакте по тэгу #design101@iloveip.

Вступление


Сначала о главном. Это руководство не для всех. Это руководство прежде всего для:
  • разработчиков, которые хотят уметь делать хорошие интерфейсы для себя, если вдруг прижмёт;
  • UX-дизайнеров, которые знают, что хороший UX-дизайн продаётся лучше в красивой UI-упаковке.

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

А пока давайте я расскажу, что вы найдёте в этой статье.

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

Всё, что вы должны знать о прототипах, замыканиях и производительности

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

Не всё так просто


На первый взгляд, JavaScript может показаться достаточно простым языком. Возможно, это из-за достаточно гибкого синтаксиса. Или из-за схожести с другими известными языками, например, с Java. Ну или из-за достаточно малого количества типов данных, по сравнению с Java, Ruby, или .NET.

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

В JavaScript поиск данных зависит от двух вещей: прототипного наследования и цепочек областей видимости. Для разработчика понимание этих двух механизмов совершенно необходимо, ибо ведет к улучшению структуры, а, зачастую, ещё и производительности кода.
Читать дальше →
Всего голосов 72: ↑69 и ↓3+66
Комментарии36

Отстой ли XMPP?

Время на прочтение6 мин
Количество просмотров35K
Я должен признаться, что написать эту статью я решил очень спонтанно, прочитав статью «XMPP отстой» и почувствовав некоторую близость к чувствам автора, так как также использую ХМРР в одном из наших продуктов. Тем не менее, сжав эмоции в кулак, я всё-таки решил просто изложить, почему я испытываю смешанные чувства к данному протоколу и разложить по полкам плюсы и минусы. Также расскажу, что мы выбрали для сервера и клиента. Это все, чтобы тебе, дорогой читатель, сделать правильный выбор и вырвать меньше волос в твоих будущих проектах.
Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии31

Сайт с нуля на полном стеке БЭМ-технологий. Методология Яндекса

Время на прочтение29 мин
Количество просмотров107K
На прошлой неделе BBC рассказала, что для новой версии главной страницы использовала методологию БЭМ, созданную в Яндексе. По такому случаю мы решили поднять материалы мастер-класса «Разрабатываем сайт с нуля на полном стеке БЭМ-технологий» и рассказать вам, как начать использовать полный стек БЭМ-технологий в своих проектах.

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



В статье мы расскажем, в чём преимущество вёрстки независимыми блоками и что такое уровни переопределения, познакомимся с готовыми библиотеками блоков и инструментами для автоматизации сборки. Покажем, как разные инструменты — например, autoprefixer, css-препроцессор Stylus или модульная система YModules — упрощают жизнь разработчика и создают по-настоящему удобную платформу, если встроить их в процесс разработки по БЭМ.

На живом примере мы объясним, в чём польза декларативного подхода, когда одни и те же идеи можно использовать как для CSS, так и для JavaScript. Отдельно остановимся на декларативных шаблонах BEMHTML и BEMTREE, которые позволяют преобразовывать данные в БЭМ-дерево, описанное в формате BEMJSON и, затем в HTML. Рассмотрим в деталях, как написать серверную часть приложения по БЭМ-методологии.
Читать дальше →
Всего голосов 96: ↑79 и ↓17+62
Комментарии37

Типы данных наносят ответный удар

Время на прочтение12 мин
Количество просмотров34K
Это вторая часть моих размышлений на тему «Python, каким бы я хотел его видеть», и в ней мы более подробно рассмотрим систему типов. Для этого нам снова придётся углубиться в особенности реализации языка Python и его интерпретатора CPython.

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

Python всегда гордился своей реализацией системы типов. Я помню, как много лет назад читал документацию, в которой был целый раздел о преимуществах утиной типизации. Давайте начистоту: да, в практических целях утиная типизация — хорошее решение. Если вы ничем не ограничены и нет нужды бороться с типами данных по причине их отсутствия, вы можете создавать очень красивые API. Особенно легко на Python получается решать повседневные задачи.

Практически все API, которые я реализовывал на Python, не работали в других языках программирования. Даже такая простая вещь, как интерфейс для работы с командной строкой (библиотека click) просто не работает в других языках, и основная причина в том, что вам приходится беспрестанно бороться с типами данных.

Не так давно поднимался вопрос добавления статической типизации в Python, и я искренне надеюсь, что лёд, наконец, тронулся. Постараюсь объяснить, почему я против явной типизации, и почему надеюсь, что Python никогда не пойдёт по этому пути.

Читать дальше →
Всего голосов 66: ↑53 и ↓13+40
Комментарии38

Количественные CSS селекторы

Время на прочтение7 мин
Количество просмотров92K
Вам когда-нибудь хотелось прямо в CSS коде посчитать, в меню 4 элемента или 10? Для четырех задать им ширину по 25%, а если набралось десять — прижать их друг к другу и уменьшить отступы?
Как выяснилось, CSS умеет работать с разным количеством элементов, позволяя избавиться от головных болей и лишнего кода на js.


Читать дальше →
Всего голосов 65: ↑61 и ↓4+57
Комментарии24

Семь маргинальных гипотез о природе эмоций

Время на прочтение7 мин
Количество просмотров6.8K
Согласно распространенному мнению, технологическая сингулярность возникнет сразу после создания искусственного интеллекта, всецело превосходящего интеллект человека.

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

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

Однако есть нечто, в чем компьютер бессилен – это способность к эмоциям. Речь не о внешнем их проявлении, а внутренней составляющей. Никакого прогресса, ни малейшей надежды на хоть сколь-нибудь примитивное их воспроизведение. Вообще ноль.
Читать дальше →
Всего голосов 20: ↑11 и ↓9+2
Комментарии90

Favicons, Touch Icons, Tile Icons и т. д. Что выбрать?

Время на прочтение6 мин
Количество просмотров154K
От переводчика.
Это перевод статьи Филипа Бернарда с сайта css-tricks.com. Часть статьи, содержащую описание работы с созданным им сервисом, я позволил себе опустить. Если вы найдете ошибки, просьба сообщить о них в личном сообщении.

Статья содержит результаты проведенного им исследования, каким должен быть фавикон (и то что его заменяет), чтобы хорошо отображаться в различных случаях.


Фавикон был представлен в 1999 году, в Internet Explorer 5 (источник) и стандартизирован W3C несколько месяцев спустя. Это была маленькая иконка, представляющая сайт.



С тех пор большинство настольных браузеров следуют тенденции и используют фавикон тем или иным способом. Это очень просто, не так ли? Создать маленькую картинку и добавить в любой интернет-проект, чтобы сделать его «завершённым». Ничего сложного.
Или нет?
Всего голосов 73: ↑71 и ↓2+69
Комментарии44

Городские легенды о медленных вызовах виртуальных функций

Время на прочтение7 мин
Количество просмотров31K
Традиционно компиляторы реализуют вызовы виртуальных функций через двойную косвенную адресацию — если класс содержит хотя бы одну виртуальную функцию, то в начале каждого объекта этого класса хранится адрес таблицы виртуальных функций. Если компилятор не знает конкретный тип объекта, на который указывает указатель, то для вызова виртуальной функции нужно сначала взять указатель на объект, прочитать адрес начала таблицы, затем по номеру метода прочитать адрес, где хранится реализация функции, затем вызвать функцию.

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

В тексте выше ключевое слово «если». Что, если компилятор знает, какую функцию на самом деле надо вызывать?
Читать дальше →
Всего голосов 81: ↑78 и ↓3+75
Комментарии38

Сети для самых маленьких. Часть десятая. Базовый MPLS

Время на прочтение45 мин
Количество просмотров388K
Сеть нашей воображаемой компании linkmeup растёт. У неё есть уже магистральные линии в различных городах, клиентская база и отличный штат инженеров, выросших на цикле СДСМ.
Но всё им мало. Услуги ШПД — это хорошо и нужно, но есть ещё огромный потенциальный рынок корпоративных клиентов, которым нужен VPN.
Думали ребята над этим, ломали голову и пришли к выводу, что никак тут не обойтись без MPLS.

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



Сегодня в выпуске:


А начнём мы с вопроса: «Что не так с IP?»

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

Информация

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