Обновить
1073.34

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

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

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

Шаг за шагом: собираем и тестируем Интернет вещей на базе платформы SAP Cloud Platform

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

Эта статья может помочь участникам конкурса SAP Кодер 2017 решить одну из задач


Интернет вещей – захватывающая тема, которая уже завтра изменит мир. Существующие IoT-платформы позволяют протестировать технологию, чем мы и займемся.

Перед вами пошаговый пример создания и настройки системы сбора данных с устройств на базе Arduino и ее подключение к SAP Cloud Platform.


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

Добавили возможность встраивать JS-скрипты в доски. Как мы делаем свою систему управления проектами

Время на прочтение5 мин
Количество просмотров9.9K
Первого апреля системе YouGile исполнился год. Нешуточный срок для проекта, который начался с мысли — «А давайте на выходных сделаем себе удобную систему управления проектами». Сейчас несколько тысяч пользователей, в основном переходят с BaseCamp и Trello, все открыто для тестирований и присылания нам обратной связи.

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

В общем, свежая функция в том, что теперь, немного зная JavaScript, можно полностью модифицировать под себя базовую версию системы.

Работает просто — по комбинации клавиш Ctrl+~ вызывается встроенный редактор JavaScript.



Можно на JS писать или заливать любые скрипты и они будут менять работу отдельных досок или проектов в компании. Выделена библиотека — примерно 200 объектов и методов, которые позволяют менять параметры системы, выполнять свой код на различные события в системе и удобно создавать свои элементы интерфейса или изменять существующие.
В статье рассматриваются примеры и задается вопрос о необходимости такой функции в системах управления проектами.

No Bugs, No Flaws или о надежности систем как таковых

Время на прочтение4 мин
Количество просмотров3.2K
Сегодня просматривая публикацию Егора Бугаенко When Do You Stop Testing!, с удивлением обнаружил, что немногие понимают и задумываются о том, что проблема тестирования и утверждения того, что система не имеет недостатков принципиально не решаема. Это кстати еще актуально и в связи с внедрением электронных выборов, и требованиями со стороны официальных лиц и журналистов доказательств отсутствия дыр в системе безопасности. Например у нас (Эстония) эта дискуссия идет полным ходом, и политики хотят получить стопроцентные доказательства надежности системы электронных выборов. Публичные политики, как правило незнакомы с логикой в её формальном виде. А Юм и Поппер, в лучшем случае, напоминают о каких то скучных философских семинарах, о которых лучше забыть. Но когда я слышу о том, что тестер или сеньор начинает вполне серьезно доказывать, что код протестирован и ошибок нет совсем, мое лицо приобретает это выражение:

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

Статический анализ → уязвимость → профит

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

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

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

Суперсилы WinDbg для .NET-разработчиков

Время на прочтение18 мин
Количество просмотров18K
Продолжая серию публикаций по докладам на конференциях, мы остановились на лучшем докладе DotNext 2016 Moscow, в которой Саша goldshtn Гольдштейн рассказывает о возможностях WinDbg для отладки .NET приложений. Этот действительно мощный инструмент позволяет решать задачи, с которыми не справляется встроенный отладчик Visual Studio.

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


Третий сервис лишний: Telegram и сам дружит с телефонией

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


Я всегда восхищался силой коллективного разума. И укреплению моей убежденности в ней послужила недавняя история: я рассказал, как можно интегрировать телефонию с Telegram с помощью сервиса IFTTT, на что коллеги из Voximplant ответили, как это можно сделать проще, а потом господин recompileme в своем комментарии обратил внимание на то, что удобный API телеграма решает задачу без участия каких-либо третьих сервисов.




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


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

Зачем использовать статические типы в JavaScript? (Преимущества и недостатки)

Время на прочтение15 мин
Количество просмотров19K
Мы о многом рассказали в первой части. Теперь с синтаксисом покончено, давайте наконец перейдём к самому интересному: изучению преимуществ и недостатков использования статических типов.

Преимущество № 1: Вы можете заблаговременно находить баги и ошибки


Статическая проверка типов позволяет проверять, что определённый нами инвариант принимает значение true, даже не запуская программу. И если имеется какое-то нарушение этих инвариантов, оно будет обнаружено перед запуском программы, а не во время её работы.
Читать дальше →

Стэнфордские курсы CS193P Зима 2017: Разработка iOS 10 приложений с помощью Swift

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


Стэнфордский университет, США — один из лучших в мире в области информатики (Computer Science). Он щедро делится своими курсами, и одним из самых популярных и успешных курсов является курс CS193P по разработке приложений на iOS, который читает профессор Пол Хэгерти. Это курс читается ежегодно, начиная с 2010 года. На данный момент актуальным является курс CS193P «Developing iOS 10 Apps with Swift», Зима 2017 года — «Разработка iOS 10 приложений с использованием Swift», и уже выложены все 17 Лекций и 5 Заданий на iTunes U (но можно смотреть и на Youtube).
В новом курсе отчетливо видно, что профессор сделал небольшой разворот всего курса от ОБЪЕКТНО-ОРИЕНТИРОВАННОГО программирования, к ФУНКЦИОНАЛЬНОМУ программированию с множеством неизменяемых объектов с APIs похожими на математические функции.
Конечно, iOS вовсе не была сконструирована на основе идеи функционального программирования. Но люди, которые изобретали Swift, держали “в голове” идею о функциональном программировании. Так что при разработке вашего iOS приложения (по крайней мере в части Модели) вы можете использовать множество элементов функционального программирования.

Это новый рубеж в iOS программировании, потому что в течение 10 лет люди, в основном, использовали в iOS программировании только reference type объекты, имея в виду концепцию объектно-ориентированного программирования. Но когда вы программируете на Swift с помощью структур structs и перечислений enums, и особенно если вы подключаете механизмы протоколов protocols и Generics, то вы можете реально сделать прекрасную работу, имеющую дело с реальным функциональным программированием.
Читать дальше →

Логика сознания. Часть 12. Поиск закономерностей. Комбинаторное пространство

Время на прочтение26 мин
Количество просмотров36K
imageПоэзия — та же добыча радия.
В грамм добыча, в годы труды.
Изводишь единого слова ради
Тысячи тонн словесной руды.
Но как испепеляюще слов этих жжение
Рядом с тлением слова-сырца.
Эти слова приводят в движение
Тысячи лет миллионов сердца.

Владимир Маяковский


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

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

Немного о строках в Си, или несколько вариантов оптимизировать неоптимизируемое

Время на прочтение9 мин
Количество просмотров205K
Хабра, привет!

Не так давно у со мной произошел довольно-таки интересный инцидент, в котором был замешан один из преподавателей одного колледжа информатики.

Разговор о программировании под Linux медленно перешел к тому, что этот человек стал утверждать, что сложность системного программирования на самом деле сильно преувеличена. Что язык Си прост как спичка, собственно как и ядро Linux (с его слов).

У меня был с собой ноутбук с Linux, на котором присутствовал джентльменский набор утилит для разработки на языке Си (gcc, vim, make, valgrind, gdb). Я уже не помню, какую цель мы тогда перед собой поставили, но через пару минут мой оппонент оказался за этим ноутбуком, полностью готовый решать задачу.

И буквально на первых же строках он допустил серьезную ошибку при аллоцировании памяти под… строку.

char *str = (char *)malloc(sizeof(char) * strlen(buffer));

buffer — стековая переменная, в которую заносились данные с клавиатуры.

Я думаю, определенно найдутся люди, которые спросят: «Разве что-то тут может быть не так?».
Поверьте, может.

А что именно — читайте по катом.
Читать дальше →

Зачем использовать статические типы в JavaScript? (Пример статической типизации на Flow)

Время на прочтение9 мин
Количество просмотров36K
Как разработчик JavaScript вы можете целый день программировать, но не встретить ни одного статического типа. Так зачем думать об их изучении?

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

Заинтересованы? Тогда вам повезло — именно об этом наша серия статей.

Во-первых, определение


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

Centrifugo – 3.5 миллиона оборотов в минуту

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


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

Эволюция приложений или куда мы идем

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

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


image

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

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

Война машин: PVS-Studio vs TensorFlow

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


«I'll be back» ©. Думаю, все знают эту фразу. И хотя сегодня мы будем говорить не о возвращении терминатора, тема статьи в некотором роде схожа. Сегодня расскажем о проверке библиотеки машинного обучения TensorFlow и попробуем выяснить, можем ли мы спать спокойно, или час Skynet уже близок…
Читать дальше →

Онлайн-курсы весеннего семестра от Академического университета и CS центра

Время на прочтение2 мин
Количество просмотров6.1K
Коллекция онлайн-курсов, подготовленных преподавателями Академического университета (СПбАУ РАН) и Computer Science Center, насчитывает уже почти 20 бесплатных курсов по программированию и математике.

Все онлайн-курсы разработаны на платформе Stepik.org, их может проходить любой желающий. Количество курсов продолжает расти, и этой весной запускаются несколько новинок:



  • Алгоритмы: теория и практика. Структуры данных (А. С. Куликов)
  • Операционные системы (М.Ю. Кринкин)
  • Функциональное программирование на языке Haskell (часть 2) (Д. Н. Москвин)
Подробнее о курсах

IntelliJ против Eclipse: JetBrains Toolbox или Yatta Launcher?

Время на прочтение4 мин
Количество просмотров9.7K
От переводчика:
Ниже приводится перевод с немецкого презабавного интервью с Фредериком Эбельсхойзером, где он раскрывает отношение компании Yatta к недавно вышедшему JetBrains Toolbox.

image


Создатели IntelliJ IDEA опубликовали приложение JetBrains Toolbox для сборки и настройки продуктов JetBrains. Аналогом для Eclipse является Yatta Launcher. Мы (автор текста, JAXenter — прим.пер.) побеседовали с Фредериком Эбельсхойзером (Yatta) о сходстве этих двух инструментов и о давнем соперничестве между Eclipse и IntelliJ.


JAXenter: JetBrains недавно выпустила свой «Toolbox». Вы, в свою очередь, стартовали с Yatta Launcher — аналогичным проектом для Eclipse. Можно ли, на ваш взгляд, провести параллель между этими двумя инструментами?

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

Как ещё быстрее подружить Telegram и телефонию

Время на прочтение2 мин
Количество просмотров12K
В недавнем хабрапосте SvyatoslavVasiliev показал, как с помощью популярного сервиса IFTTT и нескольких заклинаний настроить Telegram-уведомления о пропущенных звонках. Концепция «дерни url, и бот тебе напишет, что передано в json payload» мне очень-очень понравилась. Прототипирование и нотификации «на коленке» за несколько минут. Причем не только про телефонию. Точно таким же способом можно сделать уведомления о «прилегшем» сервисе, DDOS атаке или о выходе хабрастатьи в «лучшее». IFTTT – очень хорошая штука, но кликать надо много. Если посмотреть оригинальную статью, то количество скриншотов впечатляет. Под катом я покажу, как сделать то же самое всего в несколько команд.

Инструменты для команды удалённых разработчиков

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


Сегодня все чаще говорят о возможности удаленной работы. Тут и там большие компании анонсируют повсеместный исход офисного и не только планктона из корпоративных теплиц. Разработчики – первые, кого вспоминают в этот контексте. Работая удалённым разработчиком, вы зачастую не можете встретиться лицом к лицу с клиентом, лично представить свой проект, присесть за стол к коллеге, чтобы вместе решить какую-то проблему. Из-за этого у некоторых может возникнуть впечатление, что у удалённой работы есть ряд серьёзных недостатков. На мой взгляд, и по мнению десятков тысяч удаленных разработчиков это ложное впечатление. Удалённые разработчики в целом счастливее, работают усерднее, и быстро осваивают подходящие инструменты для совместной работы. Конечно, удалённая работа — вещь непростая. Ведь нас с детства приучают к тому, что нам нужен коллектив, и что общаться нужно лицом к лицу. Уходя из офиса на удалёнку, приходится учиться пользоваться инструментами, компенсирующими географическую распределённость команды. Под катом — подборка инструментов, которая поможет вам эффективно взаимодействовать с коллегами в других городах и странах. Безусловно, это не весь инструментарий. Было бы любопытно прочесть о ваших находках в комментариях к данной статье.
Предложите идею мобильного сервиса для пользователя банка, частного лица или корпоративного клиента и получите возможность выиграть грант 650 000 рублей для разработки вашего проекта
Узнать подробности и принять участие

php-cs-fixer: Пишем свой фиксер

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

Качество кода не только в том, как он работает, но и в том как выглядит. То, что единый в рамках кампании code style — это очень важная вещь — в наши дни убеждать уже никого не нужно. Код должен быть не только написан, но и оформлен. В плане оформления PHP кода, утилита php-cs-fixer давно уже стала стандартом. Использовать ее довольно просто, есть куча правил и можно удобно забиндить ее запуск на какую-нибудь комбинацию клавиш в шторме или на pre-commit hook в гите. Все это легко гуглится и подробно разбирается в сотнях статей. А мы сегодня поговорим о другом. Хотя в php-cs-fixer есть большое количество разных фиксеров, но что, если нам понадобится такой, которого там нет? Как написать собственный фиксер?
Читать дальше →

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