Как стать автором
Обновить
0
Михаил Р. Калинин @kamiramread⁠-⁠only

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

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

Язык программирования Crystal

Время на прочтение2 мин
Количество просмотров44K
Читая статью Интервью с Эриком Михаельс-Обером, RubyHero-2014, наткнулся на упоминание ЯП Crystal.
«Что за зверь?» — подумал я и полез искать информацию. То, что я нашел, меня, признаюсь, впечатлило.
Читать дальше →
Всего голосов 37: ↑31 и ↓6+25
Комментарии37

Что такого особенного в Nim?

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


Язык программирования Nim (ранее именовался Nimrod) — захватывающий! В то время как официальная документация с примерами плавно знакомит с языком, я хочу быстро показать вам что можно сделать с Nim, что было бы труднее или невозможно сделать на других языках.

Я открыл для себя Nim, когда искал правильный инструмент для написания игры, HoorRace, преемник моей текущей DDNet игры/мода Teeworlds.

(прим. пер. На синтаксис Nim имели влияние Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.)

Запускаем!


Да, эта часть всё ещё не захватывает, но просто следите за продолжением поста:

for i in 0..10:
  echo "Hello World"[0..i]

Читать дальше →
Всего голосов 63: ↑57 и ↓6+51
Комментарии93

Postgres. Выборка N случайных записей

Время на прочтение6 мин
Количество просмотров36K
При работе над одним проектом возникла необходимость написать некое подобие тестовой системы. Задача формулировалась примерно так:

  • из N записей в базе необходимо выбрать m (3-5) случайных строк в серии из k выборок (преимущественно k=2).

А теперь то же самое человеческим языком: из таблицы нужно два раза выбрать по 3-5 случайных записей. При этом не должно быть дубликатов и выборка должна происходить случайным образом.

Первое, что приходит в голову:

 SELECT *
  FROM data_set
  WHERE id NOT IN (1,2,3,4, 5)
  ORDER BY random()
  LIMIT 5;

И это даже будет работать. Вот только цена такого решения…
Читать дальше →
Всего голосов 56: ↑51 и ↓5+46
Комментарии47

Псевдопрактический пример замыканий и декораторов

Время на прочтение4 мин
Количество просмотров17K
Когда я только начинал изучать Python, большое впечатление на меня произвели route-декораторы в известном фреймворке flask. Конечно, я догадывался, как они могли быть реализованы, но как всегда желание писать (а не читать) превзошло необходимость взглянуть на исходный код flask, и мне пришлось выдумать то, что могло бы выглядеть так же лапидарно, как вышеупомянутые декораторы из flask'а. Упражнение на тему замыканий, декораторов и области видимости в Python могло бы выглядеть так:

def do_something(p):
    return p

@implements(do_something, lambda: not p % 2)
def do_mod2_something(p):
    return p / 2

@implements(do_something, lambda: not p % 3)
def do_mod3_something(p):
    return p / 3

do_something(10)  # returns 5
do_something(9)   # returns 3
do_something(11)  # returns 11


Как реализовать декоратор @implements? Может ли подобная реализация использоваться где-то в реальных проектах — вопрос, который мы редко принимаем во внимание, выдумывая себе упражнения для понимания того, как работают те или иные программы. Мне показалось, что это выглядит как некое замещение (override) функции, имеющее место в других языках программирования.
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии1

Вышел новый PyCharm 4: больше да лучше!

Время на прочтение3 мин
Количество просмотров39K
Всем пятничный привет от JetBrains!

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

С момента предыдущего релиза PyCharm 3.4 прошло ровно полгода, за это время мы поработали над разными подсистемами PyCharm'а, и теперь рады рассказать, что же интересного и важного появилось в новой версии PyCharm.

В ней мы сделали упор на инструменты для научного программирования. Пожалуй, главной и долгожданной особенностью этого релиза является поддержка IPython Notebook прямо в PyCharm:

Читать дальше →
Всего голосов 76: ↑73 и ↓3+70
Комментарии45

BOOTSTRA.386: тема для Bootstrap в духе 1980-х

Время на прочтение1 мин
Количество просмотров109K
Оказывается, некоторые темы для Bootstrap — это маленькие произведения искусства. В рамках надвигающейся пятницы хотелось бы рассказать об одной из таких тем.

Крис МакКензи — явно один из тех, кто скучает по старым добрым временам DOS, EGA/VGA и Turbo Vision, иначе он вряд ли бы решился сделать что-то подобное. Так что если вы успели устать от засилья плоского дизайна, то добро пожаловать в мир BOOTSTRA.386!

Осторожно: будьте готовы к острому приступу ностальгии. Единственное, чего не хватает для полного погружения — так это навигации с клавиатуры, ну и курсора в виде прямоугольного блока.

image

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

Парсим на Python: Pyparsing для новичков

Время на прочтение6 мин
Количество просмотров185K
Парсинг (синтаксический анализ) представляет собой процесс сопоставления последовательности слов или символов — так называемой формальной грамматике. Например, для строчки кода:

import matplotlib.pyplot  as plt

имеет место следующая грамматика: сначала идёт ключевое слово import, потом название модуля или цепочка имён модулей, разделённых точкой, потом ключевое слово as, а за ним — наше название импортируемому модулю.

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

{ 'import': [ 'matplotlib', 'pyplot' ], 'as': 'plt' }

Данное выражение представляет собой словарь Python, который имеет два ключа: 'import' и 'as'. Значением для ключа 'import' является список, в котором по порядку перечислены названия импортируемых модулей.

Для парсинга как правило используют регулярные выражения. Для этого имеется модуль Python под названием re (regular expression — регулярное выражение). Если вам не доводилось работать с регулярными выражениями, их вид может вас испугать. Например, для строки кода 'import matplotlib.pyplot as plt' оно будет иметь вид:

r'^[ \t]*import +\D+\.\D+ +as \D+'

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

В данной статье мы установим Pyparsing и создадим на нём наш первый парсер.

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

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

Время на прочтение5 мин
Количество просмотров970K
Очень часто стоит задача выровнять блок по центру страницы / экрана, да ещё и так, чтобы без ява-скрипта, без задания жёстких размеров или отрицательных отступов, ещё чтобы и скроллбары работали у родителя, если блок превышает его размеры. В сети ходят достаточно много однообразных примеров как выровнять блок по центру экрана. Как правило большинство из них основаны на одних принципах.
Читать далее
Всего голосов 69: ↑51 и ↓18+33
Комментарии49

Сверхбыстрое распознавание речи без серверов на реальном примере

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

В этой статье я подробно расскажу и покажу, как правильно и быстро прикрутить распознавание русской речи на движке Pocketsphinx (для iOS порт OpenEars) на реальном Hello World примере управления домашней техникой.
Почему именно домашней техникой? Да потому что благодаря такому примеру можно оценить ту скорость и точность, которой можно добиться при использовании полностью локального распознавания речи без серверов типа Google ASR или Яндекс SpeechKit.
К статье я также прилагаю все исходники программы и саму сборку под Android.

Прикручиваем Pocketsphinx к своему Андроиду
Всего голосов 185: ↑182 и ↓3+179
Комментарии87

DNS Tunneling via iodine: сыр действительно бесплатный

Время на прочтение3 мин
Количество просмотров25K
Есть:
— отключенный за неуплату интернет (adsl, lan, etc)
или
— нешифрованная wi-fi сеть c закрытым интернетом, но работающим dns
или
— очень строгий firewall с открытым dns

Хочется:
полноценный интернет, пусть даже очень медленно
Как?
Всего голосов 85: ↑78 и ↓7+71
Комментарии70

Эффект неисправного монитора для текста, картинок и SVG

Время на прочтение4 мин
Количество просмотров115K
Эффект Glitch Лукаса Беббера выглядит очень круто — как будто вы смотрите на текст на старом мониторе, который слишком часто роняли на пол и у него «плавает» вертикальная синхронизация и сведение.

Реализация этого эффекта на CSS выглядит вполне убедительно. Мне пришлось немного поломать голову, чтобы выяснить, как он работает, и теперь я хочу объяснить это вам. Кроме того, я воспроизвёл этот эффект не только для текста, но и для растровых изображений и SVG, а так же написал несколько примесей Sass, чтобы облегчить работу с ним.


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

Краткий обзор Dojo Framework Enhanced Grid или как быстро и просто организовать вывод данных в виде таблиц

Время на прочтение2 мин
Количество просмотров4.4K
imageЗачастую многие начинающие Web-разработчики страдают от того, что приходится снова и снова изобретать велосипед. Вывода и форматирование данных становится сложнее и запутаннее. Но! С этой задачей легко справится Dojo!
Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии8

Colobot Gold — opensource версия игры Colobot

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

Привет хабр. Несмотря на то, что прошло уже немало времени с момента передачи исходных кодов этой замечательной игрушки сообществу PPC (Polish Portal of Colobot), на хабре до сих пор не было статей касательно того, как сложилась судьба творения Epsitec после попадания в руки энтузиастов.

Если вы по какой-то причине не слышали об этой игре, то на хабре есть замечательная статья. Ну а я расскажу о том, что было сделано и что планируется сделать в рамках Colobot PPC.
Читать дальше →
Всего голосов 59: ↑58 и ↓1+57
Комментарии15

jQuery State form или простой контроль за формой

Время на прочтение2 мин
Количество просмотров12K
Доброго времени %username%!

Хочу представить на суд общественности один интересный плагин для контроля за состоянием формы.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии6

6 ошибок снижающих конверсию вашего магазина

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


В статье я расскажу реальные истории изменений интернет магазинов и о том, какой эффект они дали. Все истории 2012-2013 годов.

На протяжении многих лет я специализируюсь на анализе текущего положения дел интернет магазина и последующем увеличении его конверсии. За это время у меня набрались некоторые хинты, внедрение которых всегда позволяло на значительную величину увеличить продажи. (Значительное – это конечно, не 500%, а 1%-5%). Другими словами — отсутствие этих вещей, снижает эффективность магазина. Накопилось их значительно больше 6, но я постарался написать о тех, внедрение которых не требует много времени или ресурсов.
Читать дальше →
Всего голосов 73: ↑63 и ↓10+53
Комментарии51

Взаимодействие PostgreSQL с внешним сервисом для хранения изображений

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

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

Хоть PostgreSQL и предоставляет возможность хранения в БД файлов (непосредственно в bytea полях или через large objects), это наименее оптимальный вариант, как в плане скорости, так и потребляемой памяти. Другой, общепринятой практикой, является хранение изображений в виде файлов на диске, для сайта формируется путь к изображению. Из преимуществ — возможность кеширования или использование специализированной файловой системы. И третий вариант — для изображений выделяется отдельный сервис, в котором может быть кеширование, маштабирование на лету, изменение формата. Попробуем реализовать взаимодействие PostgreSQL с таким сервисом.
Перейти к реализации
Всего голосов 8: ↑5 и ↓3+2
Комментарии11

Аналог ambilight из LED ленты WS2812, arduino и киндер-сюрприза

Время на прочтение9 мин
Количество просмотров201K
Ambilight — разработанная Philips технология боковой подсветки пространства за телеящиком, которая, по мнению создателей, помогает зрителю еще больше погружаться в происходящее на экране.

В сети можно найти довольно много упоминаний о DIY Ambilight-like проектах, известны также коммерческие реализации подобного функционала в продуктах сторонних производителей / opensource-проектах, например, Lightpack.

Около года назад я практически случайно приобрел LED ленту на базе управляемых RGB диодов WS2812, рассчитывая задействовать её в каком-нибудь Arduino-проекте. Нехватка времени и противоречивая информация о возможности совместной работы с AVR контроллерами (сиречь Arduino) привела к тому, что реализация отодвинулась почти на год. Каково же было мое удивление, когда весь мини-проект по созданию Ambilight и организации его совместной работы с XBMC занял всего два вечера, т.е. 5-6 часов, включая поиск рабочего решения, написание скетча для arduino и конфигурационного скрипта к boblight, отладку их совместной работы, резку, пайку и монтаж ленты, а также прокладку 8м кабеля от arduino к телевизору.
Цель данного топика — поделиться с сообществом опытом и удивлением по поводу того, насколько все было просто, и задать направление желающим повторить это у себя дома. Мне кажется, что при наличии необходимых компонентов, повторение моего опыта «на столе» займет не более получаса.
А причем здесь киндер-сюрприз?
Всего голосов 47: ↑44 и ↓3+41
Комментарии49

Кастомизация переходных анимаций между Activity в ОС Android

Время на прочтение6 мин
Количество просмотров18K
Добрый день! В этой статье мы будем рассматривать процесс создания кастомных анимаций переходов между Activity в Android при помощи ObjectAnimator и AnimatorSet. Всем, кому это интересно — добро пожаловать под кат.

PS: статья написана в основном для начинающих разработчиков.
Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии9

Анонсирован ноутбук на солнечных батареях с временем работы около 10 часов

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


Несколько разных ресурсов отметились в описании анонсированного ноутбука SOL производства одноименной компании, являющейся дочерним подразделением канадской WeWi Telecommunications Inc. Привлекательность новинки обусловлена сочетанием двух немаловажных факторов — стоимостью $350 в США (в развивающихся странах обещают дешевле на $50) и высокой автономностью за счёт солнечных батарей в комплекте. Всё это управляется одной из последних версий Ubuntu и предваряется громкой фразой «THE WORLD'S FIRST TRULY SUN-POWERED LAPTOP».

Технические характеристики ноутбука следующие:
  • Процессор: Intel Atom D2500 1.86 GHz Duo Core, Intel 945GSE + ICH7M
  • Жёсткий диск: Seagate 2.5” SATA HDD 320GB
  • RAM: Kingston 2-4GB DDRIII SDRAM
  • Видео: 1080p HD Vide, Built-In Intel GMA3600 Graphics
  • Экран: 13.3" LCD, WXGA, 1366 x 768
  • Камера: 3MP
  • Звук: Realtek ALC661 HD Audio, Built-in 2 Speakers | Internal mic + 1/8” input
  • Модем: 3G/4G World/multimode LTE
  • GPS: gpsOne Gen8A
  • WiFi: MIMO 802.11b/gn (2.4/5GHz)
  • Bluetooth: Integrated Digital Core BT4.0
  • 3 USB2.0, Headphone jack, HDMI, LAN(10/100), Card reader (SD/MS/MMC)

Узнать подробности
Всего голосов 51: ↑45 и ↓6+39
Комментарии43

Снова о производительности ORM, или новый перспективный проект — Pony ORM

Время на прочтение6 мин
Количество просмотров23K
В своей первой статье на Хабрахабре я писал об одной из основных проблем существующих ORM (Object-Relational-Mapping, объектно-реляционных отображений) — их производительности. Рассматривая и тестируя две из наиболее популярных и известных реализаций ORM на python, Django и SQLAlchemy, я пришел к выводу: Использование мощных универсальных ORM приводит к очень заметным потерям производительности. В случае использования быстрых движков СУБД, таких как MySQL — производительность доступа к данным снижается более чем в 3-5 раз.

Недавно со мной связался один из разработчиков нового движка ORM под названием pony и попросил поделиться своими соображениями по поводу этого движка. Я подумал, что эти соображения могут быть интересны и сообществу Хабрахабр.
Читать дальше →
Всего голосов 33: ↑27 и ↓6+21
Комментарии18
1

Информация

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