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

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

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

Имена людей и интерфейс

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

image

Заинтересованная аудитория: авторы HTML-контента, разработчики скриптов серверных приложений (PHP, JSP и т.д.), менеджеры веб-проектов и любые другие люди, так или иначе связанные с дизайном форм ввода данных, дизайна баз данных и онтологий, которые затрагивают личные имена людей.

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

Читать дальше →
Всего голосов 314: ↑301 и ↓13+288
Комментарии121

Портрет Нуба

Время на прочтение17 мин
Количество просмотров6.5K
Чем старше я становлюсь, тем менее важной становится запятая. Пусть читатель сам решает, где ему ставить паузы. — Elizabeth Clarkson Zwart


Примерно так я комментировал свой код двадцать лет назад (внимание, чуток драмы):

/*
 * Когда мы дойдем сюда, наша структура уже будет готова. 
 * К тому же, мы создали достаточно большой буфер, в который 
 * можно засунуть все входные данные, плюс есть немного места
 * про запас. Я не уверен, понадобится ли оно, но хуже не будет. 
 * Теперь нам надо обновить счетчик, предполагая, что клиент 
 * уже прочитал значение, но еще не использовал его. Сначала 
 * я хотел переложить обязанность инкремента на плечи вызывающего
 * кода. С другой стороны, это означает, что инкремент нужно делать всем, 
 * поэтому я решил, что будет лучше перенести его сюда. Но мы можем 
 * пересмотреть это решение позже, если вдруг кому-то из внешних функций 
 * захочется делать инкремент самому.
*/
counter++; // инкрементировать счетчик для потребляемого значения

/*
 * Теперь нужно просмотреть весь буфер с данными. Для этой 
 * операции нам понадобится еще один индекс, иначе перед 
 * выходом из функции мы потеряем начальное значение. 
 * Я хотел назвать эту переменную ‘ref’, потому что в некотором
 * смысле мы будем обращаться с ней как со ссылкой на данные. 
 * В конце концов я пришел к выводу, что самым лучшим  
 * названием для нее будет ‘pos’. Если что, я не против обсудить
 * это решение.
*/
char* pos = buffer; // начинаем наш обход данных

/*
Теперь, мы...
*/


Ну что, узнаете? А должны! Если быть предельно невежливым, весь код выше написал нуб. (Между прочим, если вы не знаете, кто такой нуб, значит вы — нуб).

Читать далее
Всего голосов 235: ↑163 и ↓72+91
Комментарии171

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

Время на прочтение2 мин
Количество просмотров181K
Эта тема не относится к IT напрямую, но все знают, что без нее никуда. К сожалению, далеко не у всех есть возможность изучать английский с преподавателями. Ну что ж, попробуем заняться этим дома и с максимальной отдачей!
Читать дальше →
Всего голосов 165: ↑137 и ↓28+109
Комментарии187

Основы стереозрения

Время на прочтение10 мин
Количество просмотров117K
В данной статье содержатся базовые сведения о математическом аппарате, используемом в стерео зрении. Идея ее написания появилась после того как я начал работать с методами стерео зрения, в частности использовать алгоритмы реализованные в OpenCV. Эти алгоритмы зачастую ссылаются на различные понятия, такие как "фундаментальная матрица", "эпиполярная геометрия", "триангуляция". Существуют очень хорошие книжки по компьютерному зрению, в которых описывается, в том числе и стерео зрение и все необходимые понятия, но в них, нередко, бывает представлено слишком много информации для новичка. Здесь же, в краткой форме изложены базовые сведения о том, как работает стерео зрение и основные связанные с ним необходимые понятия:
  • проективная геометрия и однородные координаты
  • модель камеры
  • эпиполярная геометрия (epiporal geomerty), фундаментальная и существенная матрицы (fundamental matrix, essential matrix)
  • триангуляция стереопары точек
  • карта глубины(depth map), карта смещений(disparity map) и идея, лежащая в основе ее вычисления
Практически весь материал статьи основан на книге "Multiple View Geometry in Computer Vision" by Hartley, R. I. and Zisserman, A., а раздел про построение карты глубины описан на основе материала из "Learning OpenCV" by Gary Bradski, Adrian Kaehler.

Для понимания содержимого статьи достаточно иметь общее представление об аналитической геометрии и линейной алгебре: знать, что такое матрица, вектор, скалярное и векторное произведение.

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

Unix-way напоминалка

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

Поиск по хабру показал что ещё никто не рассказывал об инструменте, который я решил использовать. Важным отличием этого инструмента является то, что это настоящий unix-way, что намекает на одинаковую её работу на всех GNU/Linux дистрибутивах, хотя по слухам утилита работает и на ОС от Apple и даже на MS Windows (cygwin), хотя автор не очень рад такому использованию.
Читать дальше →
Всего голосов 40: ↑36 и ↓4+32
Комментарии19

Numberama. Возрождение любимой игры на iOS

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


Помните такую игру? Называли ее по-разному: числа, цифры, семечки, 19, официального названия и не было. Правила простые. В начале игры на листочке в клеточку выписаны подряд числа от 1 до 19 (кроме 10). Нужно вычеркивать одинаковые или дающие в сумме 10 цифры, которые находятся рядом или через зачеркнутые цифры. Когда все возможные пары вычеркнуты — переписываешь оставшиеся цифры в конце. Победой считается полное вычеркивание всех цифр.

Несмотря на простой геймплей, игра пользовалась популярностью, так как:
— у любого школьника или студента всегда под рукой есть тетрадка и ручка;
— одну игру можно играть очень долго. У фанатов можно было обнаружить несколько склеенных листов, вырезанных под ширину поля, то есть такие ленты, доходящие до метра и больше.
— игра сама по себе интересная и затягивающая. 40 минут урока — без проблем, две пары на 3 часа тоже ерунда. Сложнее оторваться от игры, чтобы выйти на перемену. :)

Школьные и институтские годы давно прошли и этим летом в разговоре с друзьями я вспомнил эти цифры-числа. Благо был iPad под рукой, полезли смотреть, есть ли такая игра для iOS? Хм… нет ничего. Тем лучше, ведь мы как раз искали идею нашей первой программы для iPhone. Отличное будет начало!
Читать дальше →
Всего голосов 71: ↑63 и ↓8+55
Комментарии87

SQUID для ленивых. Облегчаем себе жизнь

Время на прочтение6 мин
Количество просмотров158K
Добрый день, уважаемые Хабрапользователи, в связи со сложившейся тенденцией к изучению всем известного прокси сервера SQUID, я бы хотел предложить вариант некой типовой настройки небольшой связки, которая будет полезная для начинающих системных администраторов небольших контор, ну или просто для тех, кому лень разбираться. Данная статья ни в коем случае не претендует на глобальный мануал на все случаи жизни — как я уже и сказал это всего лишь обобщенный частный случай.
Читать дальше →
Всего голосов 39: ↑32 и ↓7+25
Комментарии34

Наиболее впечатляющие приложения HTML5 для демонстрации WebGL

Время на прочтение1 мин
Количество просмотров21K
Что такое WebGL? Это новая современная библиотека, которая расширяет язык JavaScript, которая позволяет генерировать 3D графику прямо в браузере. WebGL, поддерживается многими современными веб-браузерами, такими как Google Chrome, Mozilla Firefox начиная с v4.0), Safari. Под катом несколько интересных приложений HTML5, сделанных с WebGL.
Читать дальше →
Всего голосов 84: ↑79 и ↓5+74
Комментарии59

12+ полезных Google Chrome chrome:// команд

Время на прочтение2 мин
Количество просмотров398K
Все знают, что для того чтобы попасть в меню у Хрома, нужно нажать на Гаечный ключ в правом верхнем углу.

Однако есть несколько особенностей, которые не доступны из меню, которые вы можете увидеть только с помощью chrome:// команд.

Под катом приведены 12 самых полезных chrome:// команд, которые должны знать все.
Читать дальше →
Всего голосов 217: ↑196 и ↓21+175
Комментарии55

Спецификация системных вызовов операционной системы Хамелеон (осторожно, много картинок!)

Время на прочтение6 мин
Количество просмотров2.8K
Здоровья всем читателям!

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

Спор «микроядро vs монолит» ведётся много лет, но представляют ли обе спорящие стороны об архитектуре системы, построенной на микроядре? Возможно, этот топик немного прольёт свет на архитектуру микроядерных систем.
Читать дальше →
Всего голосов 107: ↑95 и ↓12+83
Комментарии35

Основы MPI

Время на прочтение4 мин
Количество просмотров113K
Прочитал статью «Основы MPI для «чайников»» и понял, что статья новичка способна отпугнуть.

Теория


Начнем с начала

Первое время не было единого стандарта (API) для параллельных вычислений и программистам приходилось писать для каждого кластера архитектурно-специфический код. Но, как известно, программисты люди рациональные и быстро было решено организовать стандарты (самые известные — MPI, OpenMP).
Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Комментарии19

Основы MPI для «чайников»

Время на прочтение5 мин
Количество просмотров93K
Так вышло, что мне пришлось тесно столкнуться с изучением параллельных вычислений и в частности MPI. Пожалуй, направление это на сегодняшний день является весьма перспективным, так что хотелось бы показать хабраюзерам основы этого процесса.

Основные принципы и пример

В качестве примера будет использоваться расчет экспоненты (e). Один из вариантов ее нахождения — ряд Тейлора:
e^x=∑((x^n)/n!), где суммирование происходит от n=0 до бесконечности.

Данная формула легко поддается распараллеливанию, так как искомое число является суммой отдельных слагаемых и благодаря этому каждый отдельный процессор может заняться вычислением отдельных слагаемых.
Читать дальше →
Всего голосов 37: ↑32 и ↓5+27
Комментарии29

Go Language. Небольшое клиент-серверное приложение

Время на прочтение7 мин
Количество просмотров30K
Этот код написан с целью самообучения. Чтоб закрепить материал я решил немного прокомментировать проделанную работу.
Сразу скажу: на компилируемых языках не писал.

Что делает приложение


[к] — клиент
[c] — сервер
1. По установленному TCP соединению, [к] передает публичный ключ rsa.
2. При помощи принятого публичного ключа, [c] шифрует и отправляет сообщения [к]
3. [к] расшифровывает и выводит сообщения.

Вот как это выглядит в консоли:
image
Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии13

Отладка драйверов под Windows: VirtualBox+WinDbg

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

Предисловие


Однажды мне понадобилось написать драйвер под Windows XP SP2. Сразу встал вопрос отладки. Уж очень не хотелось использовать мудреный SoftIce, ребутиться при кадждой ошибке или делать откаты. Поэтому было решено использовать виртуалку VirtualBox, которой я частенько пользуюсь и характеристиками которой вполне доволен, и отладчиком Windows Debugger от Microsoft. Через несколько часов в окошке WinDbg радостно замаячили строчки на Си, и было решено сделать «напоминалку», которая получилась неплохим «HowTo». Итак, начнем…
Читать дальше →
Всего голосов 52: ↑50 и ↓2+48
Комментарии11

Бесплатные книги

Время на прочтение3 мин
Количество просмотров60K
Несколько книг по разным темам, которые находятся в открытом доступе.

Основы программирования
Читать дальше →
Всего голосов 243: ↑239 и ↓4+235
Комментарии32

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

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

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

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

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

Причиной неверного ответа было то, что я не удосужился досконально изучить те структуры, которые лежат в основе работы с коллекциями моего любимого языка. Правда, по результатам опроса нескольких знакомых разработчиков, оказалось что это не только моя проблема, очень многие вообще не задумываются, как работают коллекции в их любимых ЯП. А ведь используем мы их каждый день и не по разу. Так родилась идея этой статьи.
Читать дальше →
Всего голосов 191: ↑179 и ↓12+167
Комментарии66

Скромное руководство по прохождению интервью: часть 1

Время на прочтение5 мин
Количество просмотров30K
Пост подготовлен с целью помочь программистам при подготовке к собеседованиям по программированию. Здесь рассматриваются все основные темы, которые, как минимум, желательно знать перед собеседованием. Использован собственный опыт, опыт и рассказы коллег, специализированная литература.
Некоторые рассмотренные здесь темы могут вообще не пригодиться некоторым программистам, а могут и быть обязательными, решать вам. Мой совет – старайтесь как можно больше изучать темы/разделы/аспекты указанные здесь.
И так, в качестве обязательных знаний:
  • Структуры данных
  • Алгоритмы и «концепции»
  • Язык программирования

Читать дальше →
Всего голосов 124: ↑109 и ↓15+94
Комментарии125

Скромное руководство по прохождению интервью: часть 2

Время на прочтение5 мин
Количество просмотров20K
Во второй части поста будут рассматриваться “Алгоритмы и концепции”, если вы не читали предыдущий пост или хотите “вспомнить” список тем, то загляните сюда.

Алгоритмы и концепции

Сортировка и поиск

Понимание/знание известных алгоритмов сортировки очень важно, поскольку многие решения связанные с сортировкой или поиском, мягко говоря, требуют владения этими алгоритмами. Хороший способ показать свои знания перед интервьюером, когда дана здача на сортировку – это «пробежать» по известным алгоритмам и увидеть/выяснить какой из них лучше всего подходит для решения данной задачи. Вы получите и решение и то, что интервьюер будет довольным вашими «разными» способов решения одной и той же задачи.
Читать дальше →
Всего голосов 69: ↑64 и ↓5+59
Комментарии43

Организация памяти

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

И так, чтобы понять организацию памяти от вас потребуется знания некоторых базовых понятий, таких как регистры, стек и тд. Я по ходу попробую объяснить и это на пальцах, но очень кратко потому что это не тема для этой статьи. Итак начнем.
Читать дальше →
Всего голосов 178: ↑145 и ↓33+112
Комментарии141

Geany и пользовательские скрипты

Время на прочтение1 мин
Количество просмотров3.2K
По роду деятельности приходится править куски конфигурационных файлов оборудования Cisco в текстовом редакторе. Я пользуюсь редактором Geany (ОS Linux), поэтому тюнить буду его и скрипт писать под bash

Мой тюнинг прост, я добавил скрипт, который добавляет или убирает в выделенном тексте команду «no»
Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии8

Информация

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

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

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