Скрипт для облегчения инспекции кода

Мне приходится читать много кода. Разного. Начиная от ассемблерных простыней на много тысяч строк, заканчивая прикладными программами на DSL, про которые никто за границами предметной области не слышал. А найти и настроить себе читалку на все случаи жизни почему-то оказалось задачей нетривиальной. Одна не понимает cp866, другая не умеет подсвечивать файлы с неправильным расширением, третья всем хороша, но на двадцатой тысяче строк начинает неприятно подтормаживать.

Благо, нет такой задачи, которую нельзя было бы решить небольшим скриптом на питоне. Я сделал скрипт, который принимает параметром имя сорца, делает из него красивый HTML, кладет его во временный файл, а файл этот отдает браузеру по умолчанию. То есть читалкой выступает браузер, который берет на себя функции распознавания кодировки и рендера, а скрипт делает подсветку и форматирование кода.

image

Главная фича скрипта — это универсальная подсветка. Подсветка не синтаксическая, цвет слова получается из первого рандомного числа при засевании генератора хешем слова. То есть одинаковые слова подсвечиваются одинаково, разные — настолько разно, насколько повезет.

image

С одной стороны, получается непривычно пестро. С другой — очень удобно, что uint32_t
на глаз отличается от int32_t.

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

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

Третья фича нужна для того, чтобы слать гневные письма автору кода. Номера строк в левой колонке сделаны ссылками на mailto по первому адресу, встречающемуся в тексте, а как правило это почта автора и есть. Там же в теме письма прописаны имя файла и номер строки, а в теле письма — сама строчка. Mailto открывает почтовый клиент по умолчанию, никаких дополнительных настроек ему не надо.

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

Некоторые приятные дополнения дарятся самим браузером. Например, увеличение и уменьшение текста,
закладки, история просмотров. Не говоря уже о привычных горячих клавишах и плагинах. Например, Awesome Screenshot позволяет снять кусок страницы и запостить его в Твитер, а Preparera Chinese — разбирать по словам китайские комментарии.

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

ссылка на оригинал статьи http://habrahabr.ru/post/207952/

На каком языке программирования вы больше всего писали в 2013 году?

Вот и подходит к концу 2013 год. Хотелось бы подвести какие-то итоги.
Результаты опроса.
image
А в комментариях хотелось бы узнать чем запомнился 2013 год.

ссылка на оригинал статьи http://habrahabr.ru/post/207950/

Четвертый ежегодный новый год за компьютером

Так как щедрые люди кончились, мы методом недолгого поиска обосновались тут:
www.p2pchat.net/webchat

Сервер: irc.p2pchat.net SSL порт: 6699 Канал: #habr2014 

История:
2010 год — habrahabr.ru/post/111026/
2011 год — habrahabr.ru/post/135567/
2012 год — habrahabr.ru/post/164453/

ссылка на оригинал статьи http://habrahabr.ru/post/207948/

Бумажки: простая игра на сегодняшний вечер

Привет! Меня уже 3-4 человека спросили, во что поиграть, не покупая дорогую игру. Прямо с компанией, прямо на новый год.

Итак, всё просто. Вам понадобится подключение к dzen.yandex.ru или lurkmore.to/Служебная:Random. Или любой другой источник случайных и при этом достаточно понятных слов. Теперь надо сделать 36 листочков с этими словами и положить их в непрозрачный пакет, а там перемешать. И ещё нужен таймер на 30 секунд, например, в телефоне.

Теперь разбиваемся на две команды. В каждой – не менее двух человек.

Первый раунд

Игрок 1 из первой команды тащит бумажку из мешка и про себя читает слово. Запускается таймер – и этот игрок начинает объяснять его всем остальным в своей команде. Можно объяснять как угодно, но только не созвучиями, переводами, рифмами или однокоренными. Команда угадала – отдал им бумажку, а затем взял следующую из пакета и постарался объяснить её. Таймер кончился – бросил необъяснённую бумажку обратно в пакет.

Пример хода в первом раунде:

— Вот есть админ, есть модератор, есть обычный… кто?
— Пользователь?
— Да. Так, теперь такая штука, на которую я попадаю, когда набираю доменное имя.
— DNS-сервер?
— Да не, ну, страничка.
— Сайт?
— Угадал. Теперь помнишь Стива Балмера, ну, он ещё это слово несколько раз в речи повторил? Только надо по-русски…
— Время!
Итого: 2 слова отгадано (пользователь и сайт), одно – нет.

Количество бумажек в команде – это очки. Записываем их, снова складываем все бумажки в пакет (те же) и начинаем второй раунд.

Второй раунд

Надо объяснять жестами, без слов. Поскольку слова те же самые, которые уже объясняли вы или ваши оппоненты, будет довольно просто. Те же 30 секунд. Не получается объяснить – можно выбросить одну бумажку обратно в пакет и взять новую.

Игрок показывает, как будто стреляет из автомата.
— Автомат Калашникова! Нет?
Игрок мотает головой: «нет».
— А, очередь!
Игрок делает движение, как будто что-то переворачивает.
— Аааа, стек!
Игрок кивает.

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

Третий раунд

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

— Бухгалтерия.
— Девушки… Пользователи!
— Длинный.
— Питон!
— Кодит.
— Разработчик!
— В папке.
— Два слова, переход хода!

Считаем очки и кто набрал больше – выигрывает.

Вот ещё пара правил:

  • Каждый из игроков команды должен объяснять по очереди. То есть такого, что один постоянно объясняет, а остальные отгадывают, быть не должно.
  • Новый раунд начинает та команда, у которой меньше очков. Если очков равное количество – та команда, к которой перешел бы ход, если бы бумажки не кончились.

Всё. Я только сэкономил вам 990 рублей за коробку, потому что вы теперь умеете играть в «БУМ». Спасибо-пожалуйста. Но там игра готовая, а у вас DIY-набор, который подойдёт даже для поезда.

Если вдруг соберётесь в айтишной компании, то вот быстрая подборка для 36 карточек на основе самых частоупотребимых слов Хабра вот из этого исследования:

Лексикон Хабра

1. Хабрахабр
2. Сеть
3. Код
4. Сайт
5. Версия
6. Информация
7. Windows
8. Функция
9. Интерфейс
10. Пользователь
11. Стек
12. Устройство
13. Сервер
14. Разработчик
15. PHP
16. Linux
17. Пост
18. Задача
19. Команда
20. Консоль
21. Ссылка
22. Язык
23. Клиент
24. Проблема
25. Пример
26. Элемент
27. Сообщение
28. Экран
29. Поддержка
30. Телефон
31. iPhone
32. Java
33. Браузер
34. Память
35. Firefox
36. Состояние

Но обычно куда интереснее и в разы полезнее играть по персонажам, поэтому вот ещё одна готовая подборка с учёными (собственно, в чём-то таком и смысл продаваемой коробки – во время игры можно узнать много полезного):

Учёные

Выборка совершенно нерепрезентативна. Просто те, кого будет интересно объяснять:
1. Галилео Галилей
2. Карл Фридрих Гаусс
3. Генрих Рудольф Герц
4. Джеймс Джоуль
5. Исаак Ньютон
6. Георг Симон Ом
7. Блез Паскаль
8. Вильям Конрад Рентген
9. Никола Тесла
10. Уильям Томсон (лорд Кельвин)
11. Андерс Цельсий
12. Альберт Эйнштейн
13. Семён Николевич Корсаков (прочитайте про него, если ещё не знаете)
14. Ричард Филлипс Фейнман
15. Ада Лавлейс
16. Мария Склодовская-Кюри
17. Льюис Кэрролл
18. Дмитрий Иванович Менделеев
19. Михаил Васильевич Ломоносов
20. Рене Декарт
21. Пифагор Самосский
22. Джордано Бруно
23. Чарльз Дарвин
24. Леонардо да Винчи
25. Эрвин Шредингер
26. Андрей Николаевич Колмогоров
27. Томас Эдисон
28. Пьер Ферма
29. Макс Планк
30. Чарльз Дарвин
31. Зигмунд Фрейд
32. Андрей Дмитриевич Сахаров
33. Сергей Павлович Королёв
34. Софья Васильевна Ковалевская
35. Николай Иванович Лобачевский
36. Леонардо Пизанский (Фибоначчи)

P.S. Да. Ещё вариант генерации слов – просто задать тематику и попросить каждого сделать 3-4 карточки самостоятельно. Только избегайте банальных слов, а то будет много повторов. Например, я как-то играл в компании по теме «IT-персонажи», так у нас было 2 Стива Джобса, 3 Билла Гейтса и 2 – внезапно – Мицгола.

Удачных праздников!

ссылка на оригинал статьи http://habrahabr.ru/company/mosigra/blog/207906/

С новым 2014 годом!

image
По традиции уже второй год первым поздравляю всех хабраюзеров с Новым Годом из Владивостока:)а
Уходящий год был не самым простым, но, судя по результатам, и не самый тяжелым. Впереди Новый Год лошади, а это значит — год бешеного ритма, неотложных дел, трудных, но решаемых задач, с которыми нам всем предстоит столкнуться и, главное, справиться! Будьте упрямы и целеустремленны — эти качества, уверен, очень пригодятся в ближайшем будущем 🙂

image

Поздравляю!

ссылка на оригинал статьи http://habrahabr.ru/post/207944/