Search
Write a publication
Pull to refresh
56
0
Илья @WST

Инженер-программист

Send message

Суровый рынок веб-разработки в России или зачем нам базы данных, постоянное хранилище и FTP

Reading time3 min
Views5.3K
image


Чем бы дитя ни тешилось, лишь бы по FTP не деплоило и не масштабировало свои продукты, перекачивая образы виртуальных машин. Респект и хвала умным парням и девушкам, которые знают, что такое CI, CD и активно их используют в своем продакшне. Cust Dev по России показал, что все очень плохо. Увы.
Читать дальше →

Ещё раз про быстрый JPEG на CUDA

Reading time3 min
Views15K
В 2012 году на Хабре уже была моя статья про быстрое сжатие в JPEG на видеокарте. С тех пор прошло уже довольно много времени и мне хотелось бы в общих чертах рассказать про результаты, которые были получены по этой теме. Надеюсь, многим будет интересно узнать, какой уровень производительности можно получить на современных видеокартах NVIDIA при решении практических задач на CUDA.
Читать дальше →

Забейте на ORM

Reading time5 min
Views17K
Привет, Хабр!

Мы в Хекслете учим людей программировать, но стараемся хитрить: например, под видом простого, на первый взгляд, курса по PHP, рассказываем людям про абстракции, рекурсии, функции первого класса, замыкании, свертку и вообще начинаем «Основы программирования» с МИТ'шного СИКПа, а не с классов и формочек. В этом и других курсах, а также в наших регулярных вебинарах рассказываем о функциональном программировании, о проблемах современных подходов и о главном зле: состоянии. В нашем чате постоянно поднимаются крупные дискуссии, в которых выясняется, что изменяемое состояние в разы повышает сложность в системе.

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

* * *

Я продвигаю функциональный подход в Ruby уже давно, и, хотя он включает в себя много различных методов и моделей, есть одна идея, одна фундаментальная идея, которая меняет всё: неизменяемость (иммутабельность).

Но что это вообще означает в Ruby? Запретить изменять любые объекты? Будет слишком медленно, так что — нет. Иммутабельно-ориентированный дизайн означает, что вы избегаете те интерфейсы, которые могут изменять объекты. Да, много методов в Руби изменяют состояние, но когда вы разрабатываете интерфейсы объектов, вы можете создавать их таким способом, что объекты не будут изменяться.

Использование неизменяемых объектов стало для меня шокирующим открытием. Одна из вещей, которую я понял после того открытия, это почему object-relational mapping (ORM) — плохая идея, и из-за нее у нас так много ненужной сложности.
Читать дальше →

Альтернативы смерти: как победить старение

Reading time11 min
Views80K


Как современная молекулярная биология смотрит на феномен старения? Как пытаются старение изучать, есть ли надежды на замедление или даже остановку этого процесса? Этим вопросам была посвящена лекция биолога Александра Панчина, с которой он выступил на прошедшем в офисе Mail.Ru Group научно-популярном лектории Set Up.
Читать дальше →

Профессор информатики «нанял» IBM Watson в качестве своего помощника

Reading time3 min
Views25K
За несколько месяцев работы студенты так и не поняли, что с ними общался не человек, а робот



Профессор информатики из Технологического института Джорджии Ашок Гоэль (Ashok Goel) в январе сообщил студентам магистратуры, что помогать в работе им теперь будет новый ассистент, которого профессор недавно нанял. Общение с ассистентами часто проходит в онлайн-режиме — те уведомляют студентов о наступающих событиях, вроде необходимости сдать очередную работу или изменении в расписании занятий. Профессору обычно приходится общаться с сотнями студентов в сети, для одного человека это непосильная задача. Поэтому обычно ему помогают 8 ассистентов. Но даже для этой команды задача отвечать на все сообщения студентов вовремя оказалась слишком сложной, поэтому Гоэль сообщил о своем намерении нанять девятого помощника. Что и было сделано – вскоре пользователей студенческого форума приветствовала Джилл Ватсон (JillWatson), новый член команды ассистентов.

Ватсон сходу приступила к работе, и студенты были очень довольны ее пунктуальностью и ответственностью. Именно Джилл помогала больше других, выполняя огромную часть обязанностей команды помощников. Она не только рассылала уведомления по электронной почте, но и комментировала посты студентов на форуме. Каково же было удивление учащихся, когда в конце апреля они узнали, что на самом деле Джилл — не человек, а машина. Точнее, специально разработанный на основе возможностей когнитивной системы IBM Watson, сервис.
Читать дальше →

PHPixie Social — простая интеграция с соцсетями

Reading time3 min
Views8.6K
image
Авторизация через соцсети это одна из самих частых задач с которыми сталкиваются разработчики развлекательных сайтов. Казалось бы там и делать нечего, ведь для каждого API существует PHP библиотека от самого вендора. Но что делать если надо подключить сразу несколько? Не хочется тянуть в проект кучу библиотек которые имплементируют один и тот же протокол OAuth, к тому же хотелось бы иметь какой-то единый интерфейс. PHPixie Social — маленькая библиотека с только одной зависимостью, которая позволяет легко работать сразу с Facebook, Twitter, Google и Вконтакте, а если вы используете PHPixie фреймворк то также сразу получаете авторизацию всего в несколько строчек кода.
Но сначала рассмотрим компонент сам по себе.

Демо проекта в конце

Как парсить интернет по-гусиному

Reading time3 min
Views40K
“Распарсить сайт” — словосочетание, которое повергало меня в уныние всего полгода назад. В моей голове сразу же проносились знакомые проблемы с настройкой фантома, или возней с селениумом. Мысли о возможной необходимости подменять useragent, пагинации и других действиях во время парсинга заставляли откладывать эту задачу в долгий ящик…

Но всё изменилось, когда я встретил Гуся. Мир парсинга заиграл новыми красками. Под катом я хочу показать несколько простых примеров, которые могут помочь распарсить непростые сайты.

Кстати, написав парсер, Гусь решил снять фильм про это, пока что вы можете насладиться трейлером:



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

Наблюдаем за пользователем – два типа timestamp

Reading time2 min
Views10K
Давным-давно, один специалист по базам данных (из тех, бородатых и уже седых) сказал мне, что метки времени (timestamp) — это самая сложная тема в базах данных. Я ему, правда, не поверил, но приколы со временем реально встречаются.

Есть стандартная проблема, которую часто вижу в чужих данных. Положим собрались вы отслеживать события/действия пользователя. Обычно у вас будет это делать некий код (JS в вебе или SDK для аппов), который будет слать данные серверу.

Каждому событию нужна метка времени. И есть выбор из двух: локальное время на клиенте или время получения события сервером. Один хороший совет что делать и загадка без ответа под катом
Читать дальше →

Как использовать Python для «выпаса» ваших неструктурированных данных

Reading time8 min
Views19K
Здравствуйте, уважаемые читатели.

В последнее время мы прорабатываем самые разные темы, связанные с языком Python, в том числе, проблемы извлечения и анализа данных. Например, нас заинтересовала книга «Data Wrangling with Python: Tips and Tools to Make Your Life Easier»:



Поэтому если вы еще не знаете, что такое скрепинг, извлечение неструктурированных данных, и как привести хаос в порядок, предлагаем почитать перевод интересной статьи Пита Тамисина (Pete Tamisin), рассказывающего, как это делается на Python. Поскольку статья открывает целую серию постов автора, а мы решили пока ограничиться только ею, текст немного сокращен.

Если кто-то сам мечтает подготовить и издать книгу на эту тему — пишите, обсудим.
Читать дальше →

Как сложить кубик Рубика новичку по алгоритму бога? Дополненная реальность приходит на помощь

Reading time2 min
Views212K


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

К слову, чемпион мира по сборке кубика Рубика (да, есть и такие чемпионы) решает головоломку всего за 4,9 секунды. Чемпиона зовут Лукас Эттер, это подросток из США. Аналогичный рекорд для роботизированной системы составляет уже 0,887 секунды (правда, этот результат еще не подтвержден). Но как научиться быстро собирать кубик Рубика самостоятельно? Можно тренироваться (на это могут уйти многие годы). А можно воспользоваться специальной программой, которая поможет собрать кубик в минимальное число ходов (так называемый алгоритм бога). Здесь никакие тренировки не нужны, приложение делает все само.
Читать дальше →

Так вы думаете, что знаете Const?

Reading time11 min
Views61K
От переводчика:
Предлагаю вам перевод поста из блога Мэтта Стэнклиффа (Matt Stancliff), автора нашумевшей на хабре статьи Советы о том, как писать на С в 2016 году.
Здесь Мэтт делится знаниями о квалификаторе типа const. Несмотря на вызывающий заголовок, возможно, многое из того что здесь описывается будет вам известно, но, надеюсь, и что-нибудь новое тоже найдется.
Приятного чтения.


Думаете, что вы знаете все правила использования const для С? Подумайте еще раз.
Читать дальше →

Основы Python — кратко. Часть 6. Расширенное определение функций.

Reading time4 min
Views75K
Продолжение, начало см. тут.

В этом разделе мы поговорим более подробно про определение функций, и раскроем некоторые Python-специфичные особенности данного процесса. Так как информации много, то постараюсь излагать все достаточно кратко.

Параметры по-умолчанию


Для всех параметров функций можно указывать значения по-умолчанию, это дает возможность вызвать функцию с меньшим числом параметров. Например, у нас есть функция для авторизации пользователя на сайте:
def login(username="anonymous", password=None):
    """Тут какие-то действия"""
    pass

# вызвать эу функцию мы можем одним 
# из нижеприведенных способов
login("root", "ujdyzysqgfhjkm")
login("guest")
login()
# мы можем указать какой из параметров мы передаем, 
# указав его имя в явном виде
login(password="nobody@mail.com") 

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

«Кандидат имеет право задавать уточняющие вопросы», или Доводим интервьюера до нервного срыва

Reading time4 min
Views129K
Недавно я прочёл запись в блоге одного парня, который жаловался, что на интервью его попросили написать функцию, которая должна скопировать файл. Нет, я понимаю, как можно взъесться на такое задание, но если бы в подобной ситуации оказался я… уж я бы оторвался по полной:

Кандидат: Что конкретно Вы имеете в виду, говоря «скопировать»?
Интервьюер: Ну… создать новый файл, содержимое которого является копией содержимого исходного файла.
Читать дальше →

Как запустить стартап на острове Бали

Reading time6 min
Views18K
image

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

Частичка космоса в кармане: итоги эксперимента

Reading time2 min
Views8.7K


Прошло больше месяца с того дня, как мы запустили проект по 3D-печати модемных чехлов с частицами настоящего метеорита. Время подвести итоги этого необычного эксперимента.
Читать дальше →

Xiaomi представила свой первый мультикоптер: 4К-камера, 27 минут полёта

Reading time2 min
Views20K
image

Известный китайский производитель качественной и недорогой электроники Xiaomi представил свой первый мультикоптер — Mi Drone. 4К-камера, трёхосевой шарнир, дистанционное управление, использующее экран смартфона как видоискатель. Стоимость 4К-версии — $460, а с камерой 1080p — $380.


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

Осторожно — Бульдозер (сборка apk пакетов в Kivy)

Reading time8 min
Views72K

Фух! Только что выбрался из под траков этого чудовища. А кое-кому повезло меньше. Как и было обещано в предыдущей статье, сегодня мы расскажем, как собираются apk пакеты для программ, написанных с использованием фреймворка Kivy при помощи утилиты Buildozer.


Что для этого понадобится? Помимо уже известных инструментов — кофе-сигареты, полкило нервов — нам потребуются ключи от новенького Бульдозера, который стоит в ангаре на github и сопутствующие зависимости, без которых он, к сожалению, не заведется, а если заведется, то никого задавить не удастся и apk пакет для Android не собрать.


Кстати, пользователи Microsoft, на своих Windows машинах за Бульдозером с нами не едут, потому что для сборки apk пакета требуется Linux система, либо ее образ на виртуалке. Ну, что ж. А мы отправляемся на github, отбуксируем Бульдозер и распакуем архив в какую-нибудь директорию. Блин. Да это просто монстр!

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

DIY Face Averaging

Reading time6 min
Views26K

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

Как оставаться в форме, работая в IT

Reading time8 min
Views34K
Рассказы про сыры по 500 гривен, luxury-ланчи и ночные тусовки как составляющие жизни типичного представителя IT-индустрии сильно приукрашены. Скорее стоит говорить о кофе на «МакДрайве», поздних ужинах и непрекращающемся потоке дедлайнов и всевозможных семейно-бытовых забот. Если на перекус время выкроить еще удается, то на спорт остается всего ничего: считанные минуты, 50 % желания и 25 % сил. Как результат – проблемы со здоровьем, которые негативно влияют не только на рабочий процесс, но и на качество жизни в целом.


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

Information

Rating
Does not participate
Location
Красногвардейское, Адыгея, Россия
Date of birth
Registered
Activity