Обновить
1067.11

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Приглашаем на субботний день GeekWeek в оффлайн

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


Сейчас в самом разгаре недельная онлайн-конференция Geek Week. Послезавтра она завершится, и это будет единственный день конференции в оффлайн-формате. В московском офисе Mail.Ru Group вы сможете послушать выступления IT-специалистов из разных компаний и вживую пообщаться с единомышленниками. Программа — под катом.
Читать дальше →

Второй митап сообщества любителей Rust в «Лаборатории Касперского»

Время на прочтение2 мин
Количество просмотров5K
Весной прошёл первый митап сообщества rustycrate.ru в штаб-квартире «Лаборатории Касперского». А в мире Rust за прошедшие полгода произошло много интересного: были реализованы футуры и асинхронный ввод-вывод поверх них, сделан первый выпуск системы поддержки IDE, появилась инкрементальная сборка. Иными словами, опять есть о чем поговорить.

image

Поэтому 22 ноября в 19:00 мы собираемся провести еще один митап сообщества, и приглашаем всех, кого интересует этот язык программирования, в наш московский офис. На встрече мы планируем обсудить опыт реального применения Rust в задачах системного программирования и тестирования, поговорим о том, что получается хорошо, а что — не очень. Докладчики из сообщества расскажут, как Rust помогает им и как его готовить, чтобы он помогал вам.

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

Создание динамических анимаций в WatchKit

Время на прочтение2 мин
Количество просмотров2.7K
Обнаружил эту статью в черновиках. Если её не опубликовать сейчас, то уже никогда – она безвозвратно устареет и место ей только на помойке.

Не так давно компания Apple представила WatchKit Framework для разработки приложений под свои фирменные часы Apple Watch. На данный момент iOS 8.3 SDK очень ограничен – весь код выполняется на iPhone/iPad, а на часах находится только интерфейс и картинки. Таким образом, при любом взаимодействии с элементами интерфейса – код выполняется на iOS-устройстве, а сигнал проходит от часов до устройства по Bluetooth и обратно. Создание анимаций из заранее нарезанных кадров – задача довольно примитивная и уже разжевана во многих блогах. Под катом речь о создании динамической анимации, кадры который подготавливаются на CoreGraphics.


Я люблю динамические анимации

Визуальный генератор регулярных выражений

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

Большинство из нас, впервые столкнувшись с данной проблемой, начинают забивать в поисковых системах что-то типа: «regexp online generator» и к своему великому сожалению осознают что гугл сломался все результаты в поиске являются сервисами для проверки корректности уже составленного регулярного выражения (или я плохо гуглил).

А как же составить это самое регулярное выражение?


image

До недавнего времени существовало 2 ответа на этот вопрос:

  1. Изучить документацию по регулярным выражениям и составить регулярку самому
  2. Попросить кого-то более опытного сделать это за вас

Теперь, после нескольких месяцев разработки, рад представить и 3-й ответ:

» Генератор регулярных выражений

История


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

Сигнализация для холодильника. Не жизнь, а «малина» c RaspberryPi 3

Время на прочтение11 мин
Количество просмотров21K
Запылилась за месяц у меня на полке Raspberry Pi 3 со встроенным Wi-Fi. Ресурсов процессора и объема памяти уже достаточно для запуска ресурсоемких программ. Как же быстро разработать и запустить на ней свою программу состоящую всего из одного небольшого файла с отправкой фото на почту и веб сервером мониторинга?



Соберем простую систему для охраны холодильника от незаконного проникновения с фото регистрацией и интеграцией в интернет через smtp. Устроим у себя настоящий интернет вещей на кухне!
Читать дальше →

Судоку: так сколько же их? Часть 2/2

Время на прочтение26 мин
Количество просмотров10K
Привет Хабр! Это вторая часть перевода статьи про подсчет различных судоку.



В этой части мы погрузимся в теорию групп, начиная с самых основ, но затрагивая только то, что нам пригодится для ответа на вопрос: а сколько же есть действительно различных судоку — без всяких повторов в виде поворотов, отражений и т.п. Те, кто довольно хорошо знаком с теорией групп — вероятно, найдут тут мало что интересного. Для остальных же почитать очень даже полезно. На всякий случай: я себя специалистом по теории групп не считаю, при переводе статьи я сам по сути изучал ее почти с нуля. То есть, вполне могут быть косяки — пишите мне о них в личку. С другой стороны — я для большинства определений лазил в википедию, а все численные результаты подтвердил собственноручно написанной программой. Так что, по идее, количество косяков должно стремиться к нулю. Но мало ли.

Как обычно, мои комментарии выделены курсивом или спрятаны под спойлеры. Под спойлерами можно найти самое интересное — куски кода, которые верифицируют все числа, полученные в повествовании.
Читать дальше →

Анонс встречи ThinkJava #4 (Харьков)

Время на прочтение2 мин
Количество просмотров3K
Приглашаем вас на очередную встречу Java-разработчиков ThinkJava #4. Спикеры нашего ThinkJava-сообщества переплыли моря и океаны, чтобы побывать на SpringOne Platform в Лас-Вегасе, и теперь готовы поделиться привезёнными знаниями и своим опытом со всеми гостями ThinkJava #4. Мы посвящаем эту встречу вопросам облачных вычислений.
Читать дальше →

learnopengl. Урок 1.6 — Текстуры

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

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


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

Разгоняем производительность iOS-приложений

Время на прочтение10 мин
Количество просмотров12K
image
Тормоз для броненосца USS Indiana BB-1, 1910 год. Эта штуковина должна тормозить корабль водоизмещением 10453 тонны.

Оригинал: iOS App Performance: Instruments & beyond
Автор: Igor M

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

Как разработчики, мы также хотим, гордиться своими приложениями.

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

Для того, чтобы иметь возможность оптимизировать производительность вашего приложения, вы должны принимать решения, основанные на данных. В этой части я покажу, как получить эти данные путем измерения производительности различных частей вашего приложения.

JetBrains Night в Москве. Видео. Интеграция серверных продуктов JetBrains друг с другом

Время на прочтение1 мин
Количество просмотров3.7K
29 сентября в Москве прошла мини-конференция JetBrains Night: 7 часов разработчики из JetBrains рассказывали разработчикам из других компаний о том, что компания делает, зачем, и что будет делать дальше, а потом отвечали на вопросы, обсуждали общие проблемы и вообще делились опытом (т.е. слушали, как разработчики из других компаний рассказывают им о том, что они делают и почему им удобно или пока еще не очень удобно делать это с помощью того, что делает JetBrains).

На Хабре мы постепенно публикуем видео всех докладов, чтобы можно было в комментариях обсудить то, что не успели обсудить на JetBrains Night, особенно с теми, кто не смог приехать лично.

В предыдущем посте Дмитрий Жемеров рассказывал про язык Kotlin (там до сих пор продолжается умеренно живая дискуссия в комментариях).

Сегодня Максим Мазин, team lead команд YouTrack и Hub, рассказывает, как JetBrains предлагает интегрировать свои серверные продукты друг с другом, а Валерия Андрианова, Product Marketing Manager в этих командах, показывает новые Agile-доски в YouTrack и объясняет, как можно выжать из Agile-досок все, что надо. По ходу дела коллеги делятся и тем, как устроена проектная работа в JetBrains.
Смотреть видео

Марсоход, Посадка

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


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


  • Monolithic Repositories — MonoRepo (Монолитные репозитории)
  • Command/Query Responsibility Segregation — CQRS (Сегрегация ответственности на чтение и запись)
  • Event Sourcing — ES (События как источник)
  • Test Driven Development — TDD (Разработка через тестирование)


Ранее мы создали пакет навигации, теперь можно приступать к разработке первого варианта использования:


Марсоход должен будет сначала приземлиться в заданном положении. Положение состоит из координат (X и Y, являющихся целыми числами) и ориентации (строковое значение north, east, west или south).
Читать дальше →

Кто ты по професии: Разница между «Programmer», «Software Engineer» и «Computer Scientist»

Время на прочтение6 мин
Количество просмотров177K
Как только сегодня ни называют программистов, особенно в зарубежных СМИ. Да и у нас, в частности, при поиске работы, можно встретить абсолютно разные описания должностных обязанностей.

Меняется ли от этого суть работы? Мы в 1cloud попробовали разобраться в том, какую работу подразумевают такие специализации как «Programmer», «Software Engineer» и «Computer Scientist».

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

Выпуск Rust 1.13

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

Команда Rust рада представить выпуск Rust 1.13.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.


Как обычно, вы можете установить Rust 1.13.0 с соответствующей страницы официального сайта, а также ознакомиться с подробным списком изменений в 1.13.0 на GitHub. В этот выпуск вошло 1448 патчей.


Это была по-настоящему горячая пора в Rust. Мы участвовали в трёх конференциях подряд — RustConf, RustFest и Rust Belt Rust. Было классно увидеть так много любителей Rust; со многими мы встретились впервые! Мы много думали о будущем, разрабатывали план на 2017 и создавали инструменты, нужные нашим пользователям.


И несмотря на всё это, мы собрали новый выпуск с кучей новых крутых фишек.


Что вошло в стабильную версию 1.13


Выпуск 1.13 включает долгожданный оператор ?, ускорение компиляции, добавление
некоторых возможностей в Cargo и стандартную библиотеку. Также этот выпуск привносит множество небольших улучшений в документацию и сообщения об ошибках. Это результат работы многих людей, и они не упоминаются в замечаниях к выпуску индивидуально.

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

Ближайшие события

Как я добавил 30000 человек в первый круг контактов, а эту соцсеть заблокируют в РФ

Время на прочтение6 мин
Количество просмотров29K
Вспоминая собеседования из своего прошлого решил «не идти в гору», а чтобы гора сама пришла ко мне, точнее кадровые сотрудники с вакансиями. Опять поиск работы и теперь на рынке где реальные доходы стали меньше, а соискателей больше…

Но тратить время на рутинные операции по поиску и добавлению профессионалов в социальной сети не хотелось. После 2000 кликов вручную критерии поиска у меня оказались формализуемые. Поэтому написал скрипт который экономит мое время и зрение. К общению с людьми я не пускаю бездушного «робота». Сам пишу и сам отвечаю.



Мне посчастливилось познакомиться и пообщался с интересными людьми из индустрии, получить сотни сообщений со спамом и ссылки на сотни вакансий. Готового скрипта здесь не будет, но в публикации есть пара фрагментов кода для магии webdriver и ссылки. Также вы узнаете последние новости про поиск работы в России и описание моего опыта по продвижению в соцсети…
Читать дальше →

CleverScrollbar.js — Сайдбар для понятной навигации

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

Для тех, кому хочется сразу посмотреть, о чём идёт речь: пример работы библиотеки. Нажмите на кнопку "Load Scrollbar!", чтобы увидеть результат.


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


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

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

Принимаем электронную почту на Node.js

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

Электронная почта как и www появилась на заре Интернета, и несмотря на свою архаичность продолжает удерживать позиции одной из главных технологий сети. Тем временем разработчики не слишком-то ее ценят и используют в одностороннем порядке, указывая отправителем noreply. И в первую очередь это связано с трудоемкостью процесса обработки входящей корреспонденции.


Тем временем, хвала комьюнити Node.js, появились пакеты, которые позволяют принимать почту без боли и страданий – это smtp-server и mailparser. Давайте я покажу, как в пару десятков строк кода создать свой почтовый сервер с поддержкой SSL шифрования, фильтрацией спама с помощь spamassassin и прочими радостями.

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

Простой API gateway на базе PHP и Lumen

Время на прочтение7 мин
Количество просмотров43K
Термин «микросервисы» сегодня у всех на слуху – внезапно это стало очень модно, и многие компании объявляют переход на этот архитектурный паттерн даже толком не разобравшись в нём. Впрочем, обсуждение полезности микросервисов оставим за пределами этой статьи.

Традиционно перед коллекцией микросервисов предлагается дополнительный слой – так называемый API gateway, который решает сразу несколько проблем (они будут перечислены позже). На момент написания этой статьи open source реализаций таких gateway почти нет, поэтому я решил написать свой на PHP с использованием микрофреймворка Lumen (часть Laravel).

В этой статье я покажу насколько это простая задача для современного PHP!
Читать дальше →

Шишки и грабли Android-разработчика за 2 года

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

Я ясно помню тот день в далеком 2014 году, когда я решил заняться программирование под Android. Это оказалось лучшим решением, которое я принял в моей жизни. Уже прошло почти два с половиной года, и за это время у меня возможность кое-чему научиться.

Когда я только начал, я не знал никого, кто мог бы научить меня, показать, как правильно нужно делать. И я совершил МНОЖЕСТВО ошибок, в так же потратил кучу времени на то, чтобы потом их исправить.

Полтора года спустя, мне выпал шанс поработать с очень талантливыми и опытными Android-разработчиками, которые направляли меня и помогли мне привести все в порядок. Эти две составляющие научили меня многому. Я понял, что надо ДЕЛАТЬ, а самое главное, что НЕ НАДО.

И уже какое-то время я, как могу, стараюсь помогать другим разработчикам — прямо или косвенно. Вот мои профили: StackOverflow и Github.

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

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

Принимая PHP всерьёз

Время на прочтение9 мин
Количество просмотров32K
image
Ракета Союз, доставленная на поезде на пусковую площадку. Фото из общественного достояния NASA.

Это перевод статьи Taking PHP Seriously, автор которой является одним из инженеров известного приложения Slack. Он рассказывает о недостатках и преимуществах PHP, а также о языке Hack и виртуальной машине HHVM, на которую почти завершил переход Slack.

Slack использует PHP для большей части своей серверной логики, что является не самым популярным выбором в наши дни. Почему же мы решили написать новый проект именно на этом языке? Следует ли вам поступать также?

Большинство программистов, которые немного игрались с PHP, знают две вещи про него: это плохой язык, который они никогда не станут использовать при наличии выбора, и что некоторые из чрезвычайно успешных проектов в истории мира используют его. Это не совсем противоречие, но этот факт должен заставить вас задуматься. То есть, Facebook, Wikipedia, Wordpress, Etsy, Baidu, Box и в последнее время Slack — все они успешно решают проблемы, не смотря на то, что используют PHP? Были ли бы они более успешными, если бы они использовали у себя Ruby? Erlang? Haskell?

Вполне возможно, что нет.
Читать дальше →

Приглашаем на онлайн-конференцию GeekWeek 2016

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

Профессионалами (а особенно IT-профессионалами) не рождаются. Это значит, что необходимо постоянно учиться и развиваться сразу во многих направлениях. Именно поэтому мы совместно с образовательным порталом GeekBrains.ru организуем онлайн-конференцию GeekWeek 2016. И приглашаем всех, кто интересуется сферой информационных технологий или хочет попробовать себя в различных направлениях программирования, веб-дизайна и интернет-маркетинга.
Читать дальше →

Вклад авторов