Обновить
1347.96

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

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

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

Взрывная волна в Unity3D (displacement shader)

Время на прочтение3 мин
Охват и читатели31K
Мой телеграм канал: https://t.me/winc0de.
Всем привет, пишу небольшую 2D игру и параллельно хотел бы рассказывать о реализации некоторых вещей в Unity3D.
Программирование графики само по себе очень интересное занятие с безграничным количеством вариаций результата. В этой статье опишу реализацию искажения пространства от взрывной волны.

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

Автономный ftp-client с докачкой файлов

Время на прочтение6 мин
Охват и читатели17K
Хочу поделиться своим опытом в разработке автономного ftp клиента.

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

Итак, требования к клиенту следующие:

  1. Опрос ftp-сервера на наличие новых файлов и их последующая загрузка.
  2. В случае внезапной остановки загрузки (будь то обрыв соединения, или упадёт система, на которой стоит мой ftp-клиент), закачка должна продолжиться при первой возможности.
  3. Ограничение скорости загрузки (это связано со стоимостью трафика по GSM).

Если интересен мой способ решения задачи, прошу под кат!
Читать дальше →

За что ругают Golang и как с этим бороться?

Время на прочтение5 мин
Охват и читатели78K
Написав несколько проектов на Go, я оглянулся назад. Посмотрел на язык, на его плюсы и минусы. В этой статье хотелось бы поговорить о том, за что критикуют Go. Конечно же, речь пойдет об отсутствии ООП как такового, перегрузки методов и функций, обобщенного программирования и исключений. Действительно ли это доставляет столько проблем? Или это проблема подхода разработки? Я поделюсь своим опытом решения этих вопросов.
Читать дальше →

О координации изменений во временных зонах

Время на прочтение7 мин
Охват и читатели16K

tz map


Знаете, что общего у Турции, Чили, России, Венесуэлы, Азербайджана, Северной Кореи и Гаити? Хаос в управлении временными зонами.


Нет, это не шутка. На самом деле это достаточно серьёзная проблема. Хуже всего во временных зонах не то, что они вообще существуют, и даже не летнее время. Хуже всего то, что часто они изменяются совершенно внезапно. Позвольте я объясню.

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

Как создать идеальный Pull Request

Время на прочтение3 мин
Охват и читатели24K
С ростом компании меняются люди и проекты. Не так давно в блоге GitHub появилась интересная статья, в которой автор рассказывает, как делать, а как лучше не делать Pull Request’ы. Перевод, традиционно, спрятан под катом.

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

Введение в автономную навигацию для дополненной реальности

Время на прочтение14 мин
Охват и читатели11K

Компьютерные системы с управлением без помощи контроллеров — новый этап во взаимодействии человека и компьютера. К этой области относятся технологии, воспринимающие физическую среду, включая распознавание жестов, распознавание голоса, распознавание лица, отслеживание движения, реконструкцию среды. Камеры Intel RealSense F200 и R200 реализуют ряд возможностей из этой области. Благодаря возможности съемки с определением глубины камеры F200 и R200 позволяют выстраивать трехмерную среду и отслеживать движение устройства по отношению к среде. Реконструкция среды вместе с отслеживанием движения позволяет реализовать возможности виртуальной реальности, в которой виртуальные предметы вписываются в реальный мир.

Цель этой статьи — ознакомление с автономной навигацией и описание ее применения в приложениях дополненной реальности. Разработанный пример использует камеру Intel RealSense R200 и игровой движок Unity 3D. Рекомендуется заранее ознакомиться с возможностями Intel RealSense SDK и Unity. Сведения об интеграции Intel RealSense SDK с Unity см. в статьях Разработка игр с Unity и камерой Intel RealSense 3D и Первый взгляд: дополненная реальность в Unity с Intel RealSense R200.
Читать дальше →

Метод Монте-Карло для поиска в дереве

Время на прочтение4 мин
Охват и читатели39K


Метод Монте-Карло это алгоритм принятия решений, часто используемый в играх в качестве основы искусственного интеллекта. Сильное влияние он оказал на программы для игры в Го, хотя находит свое применение и в других играх, как настольных, так и обычных компьютерных (например Total War: Rome II). Так же, стоит отметить, что метод Монте-Карло используется в нашумевшей программе AlphaGo, победившей го-профессионала 9-го дана Ли Седоля в серии из 5 игр.

В данной статье хотелось бы рассказать про версию алгоритма Монте-Карло под названием Upper Confidence bound applied to Trees (UCT). Именно после публикации этого алгоритма в 2006-м году, программы для игры в Го сильно усилили свои позиции и достигли значительных успехов в игре против человека.
Читать дальше →

Разбор задач финала Технокубка 2016

Время на прочтение14 мин
Охват и читатели14K
Компания Mail.Ru Group совместно с МФТИ и МГТУ им. Н. Э. Баумана подвели итоги Технокубка — первой олимпиады по программированию для учащихся 8–11-х классов. За звание самого талантливого молодого программиста сражались школьники более чем из 20 городов России и СНГ. Всего на олимпиаду зарегистрировались 2132 участника, 113 приехали на очный финал, который проходил одновременно на двух площадках: в МГТУ им. Н. Э. Баумана и МФТИ. Награждение состоялось в офисе Mail.Ru Group. Олимпиада проходила на платформе Codeforces.



У ребят было три часа на решение семи задач, которые составляли преподаватели и специалисты ведущих технических вузов России. Последнюю, самую сложную, решил только один из участников — Владислав Макеев, который в итоге и занял первое место. Всего призёрами стали 27 участников олимпиады, они разделили между собой дипломы I, II и III степени. Победители (диплом I степени) получили дополнительные восемь баллов для поступления, обладатели дипломов II и III степени — по шесть баллов. Первое место занял Владислав Макеев (Москва, 11-й класс), второе — Александра Дроздова (Нижний Новгород, 10-й класс), третье — Григорий Резников (Москва, 11-й класс). Полный список победителей доступен по ссылке. В этом посте мы предлагаем вам ознакомиться с задачами финала и их решениями.
Читать дальше →

Хакеры и биржи: К каким последствиям могут приводить атаки на финансовые компании

Время на прочтение5 мин
Охват и читатели8.1K


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

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

Async/Await в javascript. Взгляд со стороны

Время на прочтение6 мин
Охват и читатели137K


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

Первое что хочется развеять, это распространенное заблуждение о том, что async/await — это фича ES7.

По моему мнению, использование терминов ES6 и ES7 само по себе не очень верное и может ввести разработчиков в заблуждение. После удачного релиза спецификации ES2015, называемой ES6, у многих людей сложилось ошибочное мнение, что все в нее не вошло и заполифилено через babel — это фичи ES7. Это не так. Вот список того что появится с релизом спецификации ES2016. Как видите он не такой большой и async/await в нем никак не значится.

Я хочу, чтобы мы говорили правильно. И говоря о той, или иной фиче, ссылались на конкретную спецификацию в рамках которой она описана и реализована, а не мифические ES6, ES7 … ESN.
Читать дальше →

Интеграция PVS-Studio в CI процесс

Время на прочтение5 мин
Охват и читатели4.2K

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


Меня зовут Стас, я инженер команды DevOps Tooling в компании Align Technology.
В этой статье я попробую коротко рассказать про то, как в нашей компании внедрили статический анализ кода на основе PVS-Studio.


Введение


Приблизительно год назад мы задумались о том, чтобы внедрить в нашей компании статический анализ.
Мы и раньше использовали для этого различные средства, в том числе и для C/C++ проектов. Потому было интересно попробовать новый инструмент для известной задачи.
Инструмент, более совершенный, чем встроенный средства VS, cpp-check, интегрированный в Sonar.

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

Исповедь Битрикс хейтера

Время на прочтение47 мин
Охват и читатели188K
Что-то много развелось в последнее время статей про минусы битрикса, и их опровержений. Раз уж пошла такая пьянка, то и я добавлю свои 5 копеек.
В комментариях к статьям писали, что не хватает конкретики, примеров, более глубокого обзора.

Данная статья — попытка этот обзор написать. Хотя нет, это скорее пост ненависти и боли (может даже немного нытья). Это такой расширенный вариант поста про минусы от pistol. Я постараюсь описать большинство тех вещей, которые раздражают именно меня и моих коллег в Битриксе. Постараюсь собрать в одном посте все те минусы, которые доставляют ежедневно очень много боли. Под конец я постараюсь сделать выводы.

Кто я такой? Да в общем-то, обычный разработчик. Работаю с битриксом с ноября 2010 года (5.5 лет). Работаю только с битриксом, не сделал ни одного коммерческого проекта на других CMS, не использовал фреймворки в создании сайтов. По роду деятельности я занимаюсь в основном интернет-магазинами, их созданием, поддержкой и развитием.
Читать дальше →

5 стадий API: что мы поняли, написав две версии

Время на прочтение8 мин
Охват и читатели29K
Сегодня мы хотим поговорить о сокровенном — у нас есть API.

Мы писали, а затем переписывали его заново на протяжении четырех лет. И за это время прошли почти все классические стадии “принятия неизбежного”. Кроме одной — четвертой. И хотим поделиться нажитыми непосильным трудом выводами, что делать и не делать, если вы решите делать свой “мощный эпиай”.



Процесс создания API uCoz иногда напоминал сюжет сериала The Knick («Больница Никербокер») — с неудачными операциями, кишками и экспериментами на живых людях.

Стадия первая – Отрицание

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

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

Результаты большого чемпионата по программированию — 2016 на 5 тысяч человек

Время на прочтение4 мин
Охват и читатели15K


С 16 марта по 15 апреля проходил уже третий наш Открытый чемпионат по программированию для любых участников из России и других стран. В прошлый раз участвовало чуть больше 4 тысяч человек, а в этом году в первом туре на платформе Codeforces было уже целых 5 тысяч участников. Причём школьники и студенты шли поначалу наравне с опытными разработчиками и профессиональными киберспорстменами (хотя они тоже часто – студенты).



Кроме основного соревнования по олимпиадной схеме, для 50 финалистов была отдельная задача на написание AI боевого робота (вобота), сражающегося с другими роботами участников.
Читать дальше →

Проекты студентов в рамках Google Summer of Code

Время на прочтение3 мин
Охват и читатели11K


22 апреля объявлены результаты отбора студентов в рамках Google Summer of Code. Этому предшествовали 4 напряженные недели, во время которых менторы на собственной шкуре ознакомились с парадоксом Фредкина (чем больше похожи друг на друга два объекта, тем труднее сделать выбор между ними) и его предельным вариантом — парадоксом Буриданова осла. Это было связано со «взаимозаменяемостью» студентов, которые одинаково хорошо подходили на два разных сетевых проекта.
Читать дальше →

Утечки не нарушают безопасность памяти

Время на прочтение6 мин
Охват и читатели11K

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

Проще говоря: нарушение доступа к памяти — это какие-то действия с некорректными данными, а утечка памяти — это отсутствие определённых действий с корректными данными. В табличной форме:


                    Корректные данные     Некорректные данные
Используются        OK                    Ошибка доступа к памяти
Не используются     Утечка памяти         OK

Лучшие программы выполняют только действия из ОК-ячеек: они манипулируют корректными данными и не манипулируют некорректными. Приемлемые программы могут также содержать некоторые корректные, но неиспользуемые данные (утечки памяти), а плохие пытаются использовать некорректные данные.

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

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

Обзор обзора минусов Битрикс, или чувак читает только первые 5 страниц

Время на прочтение2 мин
Охват и читатели30K


Здрасте!

В русскоязычном сегменте Интернета существует такой интересный феномен, как хейтеры Битрикс.

Недавно прочитал статью Минусы Битрикса, или Битрикс глазами программиста, и плакать захотелось. Причем этот парень не одинок, он по наслышке знает, что Битрикс — это ужас ужасный.

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

C/C++: как измерять процессорное время

Время на прочтение10 мин
Охват и читатели87K

image
КДПВ


От переводчика:
Большинство моих знакомых для измерения времени в разного вида бенчмарках в С++ используют chrono или, в особо запущенных случаях, ctime. Но для бенчмаркинга гораздо полезнее замерять процессорное время. Недавно я наткнулся на статью о кроссплатформенном замере процессорного времени и решил поделиться ею тут, возможно несколько увеличив качество местных бенчмарков.


P.S. Когда в статье написано "сегодня" или "сейчас", имеется ввиду "на момент выхода статьи", то есть, если я не ошибаюсь, март 2012. Ни я, ни автор не гарантируем, что это до сих пор так.
P.P.S. На момент публикации оригинал недоступен, но хранится в кэше Яндекса


Функции API, позволяющие получить процессорное время, использованное процессом, отличаются в разных операционных системах: Windows, Linux, OSX, BSD, Solaris, а также прочих UNIX-подобных ОС. Эта статья предоставляет кросс-платформенную функцию, получающую процессорное время процесса и объясняет, какие функции поддерживает каждая ОС.

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

Как использовать ограничения JSON при работе с PostgreSQL

Время на прочтение7 мин
Охват и читатели19K


Ранее в блоге на Хабре мы рассказывали о развитии нашего продукта — биллинга для операторов связи «Гидра», а также рассматривали вопросы работы с инфраструктурой и использования новых технологий. К примеру, мы рассмотрели плюсы Clojure и ситуации, когда стоит и не стоит использовать MongoDB.

Сегодня речь пойдет о работе с JSON, и в частности, о применении ограничений. Интересный материал на эту тему опубликовал в своем блоге разработчик Магнус Хагандер (Magnus Hagander) — мы представляем вашему вниманию главные мысли этого материала.
Читать дальше →

Пасхальные яйца к Пасхе

Время на прочтение3 мин
Охват и читатели29K
Скоро пасха, время искать яйца, да не простые, а программные. И мы нашли их.

Python


Введите в REPL import __hello__ или import __phello__, и вы увидите:

>>> import __hello__
Hello world...
>>> import __phello__
Hello world...


Чтобы полюбоваться еще раз, используйте reload(__hello__).
Ещё одна небольшая забава:

>>> from __future__ import braces
  File "<stdin>", line 1
SyntaxError: not a chance


Есть в Python модуль, носящий название antigravity. Вызовите его аналогичной командой import antigravity, и в браузере откроется комикс с ресурса XKCD: xkcd.ru/353

Главная духовная пасхалка Python — скрытое сообщение под названием The Zen of Python. Введите в REPL import this и вы увидите послание авторства Тима Питерса (Tim Peters).

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

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