Обновить
1397.1

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

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

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

Интервью с мамой, банковским программистом на COBOL'е

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


Фото из Гугла, это не мама автора


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


Объясню немного


Мир банковского программного обеспечения — это другая вселенная. Она сильно отличается от той, к которой привыкло большинство из нас. Я публикую этот пост на HN и на Reddit. Публикую интервью не в виде вопросов-ответов, а в виде рассказа. Я добавил некоторые вопросы и ответы в нижнюю часть поста.


1991


Год, когда она начала внутреннее обучение в банке Nordea, который тогда назывался Nordbanken (Северный банк). В 2001 году его переименовали в Nordea. Во время обучения она должна была проходить различные тесты, в первую очередь тест IQ, чтобы показать, что она обладает интеллектом, достаточным для работы в этой области. Тест на психологическую устойчивость — что у неё достаточно нервов для этой специфической работы и тест на многозадачность, который она завалила с оценкой 22/100. Остальные тесты она прошла успешно и заняла одну из 16 доступных позиций.


Должность звучала «как программист мэйнфреймов IBM на языке COBOL», и до сих пор, уже 25 лет, моя мама работает на этой должности в том же банке.


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

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

Компьютерное зрение для слепых людей. Применение Intel Edison

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


Сотрудник компании Intel Paul Guermonprez решил совместить приятное с полезным: свой опыт разработчика он использовал для создания прототипа системы помощи плохо видящим людям средствами компьютерного зрения.В качестве аппаратной платформы он использовал очки Pivothead SMART с дополнительным модулем Live Mod Set, построенным на базе Intel Edison. В настоящий момент система умеет:
  • находить и считывать баркоды, произносить голосом их описания,
  • определять цвета предметов и произносить их,
  • подбирать цвета, подходящие к «увиденному» цвету,
  • определять лица находящихся впереди, их относительное местоположение и расстояние до них, озвучивать эту информацию в стерео.

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

Использование механизма SRR в приложениях разработанных на Qt для QNX

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

Фреймворк Qt один из самых популярных и применяемых при разработке кроссплатформенных настольных и мобильных приложений. Эта популярность не могла рано или поздно не привести к использованию Qt в системах специального и ответственного назначения. Достаточно давно существует возможность разработки на Qt для QNX Neutrino. Библиотека Qt поддерживает платформу QNX, а среда разработки Qt Creator обеспечивает взаимодействие с системами на QNX. Однако QNX, как система в том числе и для встраиваемых решений, имеет в своём составе технологии, которые не требуются, а потому и отсутствуют в системах общего назначения. Ключевая для ОСРВ QNX функциональность, на которой построена сама система и на которую нередко опираются пользовательские задачи это передача сообщений. Об особенностях применения механизма SRR (Send/Receive/Reply), как ещё называют передачу сообщений в QNX, и о разработке двух примеров Qt-приложений — клиента и сервера — я и хотел бы рассказать сегодня.

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

«Ближе к народу»: Нужно ли руководителю разбираться в программировании

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


/ фото Sean Hagen CC

Мы в 1cloud постоянно работаем над оптимизацией взаимодействия наших специалистов и стараемся перенимать опыт коллег. Это дает свои плоды и в виде постов на Хабре.

На прошлой неделе мы подготовили сразу два холиварных материала по теме: дали 6 «вредных» советов разработчикам и пару ценных рекомендаций на тему общения их коллегам по цеху.

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

Путь длиною в React

Время на прочтение3 мин
Охват и читатели13K
В VoxImplant мы используем React.js и TypeScript для всех новых фронтенд-проектов. Но стараемся не зацикливаться на выбранных инструментах и внимательно смотрим по сторонам – не летит ли орел, не ползет ли змея, не случилось ли что интересное у других фреймворков. Недавно нам попалась статья, автор которой подробно и вдумчиво сравнивает React с Ember. И, да, у него большой опыт работы и с первым, и со вторым (а не как это обычно бывает). Предлагаем вашему вниманию адаптированный, и, надеемся, легко читаемый, перевод.
Читать дальше →

Стандартизация записей

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

Я волком бы выгрыз бюрократизм!
Владимир Маяковский


Рассмотрим в этой статье проблему стандартизации записей. Стандартизация, прежде всего, нужна при импорте миллионов записей, накопившихся за десятилетия. Данные, имеющие разную кодировку страниц из разных автоматизированных систем, собираются в единую базу информационной системы. В таком случае, обращение к функциям чтения строк по ascii, типа QRchar себя не оправдывает, поскольку формат Юникода от записи к записи отличается. К тому же кириллица в словах часто бывает перемешана с цифрами и латиницей (например, когда вместо 'ч' пишется '4'). При этом прямая циклическая замена цифр и латиницы на кириллицу в строке невозможна, так как цифры с латиницей встречаются в и обозначениях.

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

JIT-компилятор оптимизирует не круто, а очень круто

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

Недавно Лукас Эдер заинтересовался в своём блоге, способен ли JIT-компилятор Java оптимизировать такой код, чтобы убрать ненужный обход списка из одного элемента:


// ... а тут мы "знаем", что список содержит только одно значение
for (Object object : Collections.singletonList("abc")) {
    doSomethingWith(object);
}

Вот мой ответ: JIT может даже больше. Мы будем говорить про HotSpot JVM 64 bit восьмой версии. Давайте рассмотрим вот такой простой метод, который считает суммарную длину строк из переданного списка:


static int testIterator(List<String> list) {
    int sum = 0;
    for (String s : list) {
        sum += s.length();
    }
    return sum;
}
Читать дальше →

Синтезатор речи «для роботов» с нуля

Время на прочтение25 мин
Охват и читатели26K
image

Давным-давно посетила меня идея создать синтезатор речи с «голосом робота», как, например, в песне Die Roboter группы Kraftwerk. Поиски информации по «голосу робота» привели к историческому факту, что подобное звучание синтетической речи характерно для вокодеров, которые используются для сжатия речи (2400 — 9600 бит/c). Голос человека, синтезированный вокодером, отдает металлическим звучанием и становится похожим на тот самый «голос робота». Музыкантам понравился данный эффект искажения речи, и они стали активно его использовать в своем творчестве.
Подробнее про реализацию синтезатора речи.

Честный MVC на React + Redux

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

MVC


Эта статья о том, как построить архитектуру web-приложения в соответствии с принципами MVC на основе React и Redux. Прежде всего, она будет интересна тем разработчикам, кто уже знаком с этими технологиями, или тем, кому предстоит использовать их в новом проекте.

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

Открытие API для работы с услугами от российского лоукост-хостера (часть 1)

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



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

IaaS и наука: Как это работает. Часть 2

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


/ фото Matteo Bagnoli CC

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

Выпущен PhpStorm 2016.2

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

Буквально вчера вышла новая версия PhpStorm, вторая в этом году. Я надеюсь, что ни наша IDE, ни компания JetBrains в отдельном представлении на Хабре не нуждаются, поэтому сразу перейду к основным изменениям. Кстати, чтобы не терять времени даром, можете поставить пробную 30-дневную версию на загрузку и читать дальше. Поехали!

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

Короткая шпаргалка по блокировкам при чтении и изменении данных в зависимости от уровня изоляции транзакции в MSSQL

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

  • если в одной транзакции поменять данные — селект этих данных (в другой транзакции или без транзакции) не будут ждать окончания первой транзакции и вернут записанные данные незакомиченных транзакций
  • если в одной транзакции считать данные — апдейты этих данных в другой транзакции не будут ждать окончания первой транзакции
  • шаред локи не используются. Что аналогично установке NOLOCK хинта во все селекты в Read Commited
  • эксклюзивные локировки устанавливаются в процессе выполнения стейтмента и снимаются по окончанию транзакции


Read Committed + read_committed_snapshot off

(alter database xxx set read_committed_snapshot off)

  • если в одной транзакции поменять данные — селект этих данных (в другой транзакции или без транзакции) будут ждать окончания первой транзакции. Селект с NOLOCK хинтом вернёт изменённые, но не закомиченные данные.
  • если в одной транзакции считать данные — апдейты этих данных в другой транзакции не будут ждать окончания первой транзакции
  • шаред локировки устанавливаются в процессе работы стейтмента и снимаются по окончанию стейтмента
  • эксклюзивные локировки устанавливаются в процессе выполнения стейтмента и снимаются по окончанию транзакции


Дальше

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

Hello, TensorFlow. Библиотека машинного обучения от Google

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

tensorflow


Проект TensorFlow масштабнее, чем вам может показаться. Тот факт, что это библиотека для глубинного обучения, и его связь с Гуглом помогли проекту TensorFlow привлечь много внимания. Но если забыть про ажиотаж, некоторые его уникальные детали заслуживают более глубокого изучения:


  • Основная библиотека подходит для широкого семейства техник машинного обучения, а не только для глубинного обучения.
  • Линейная алгебра и другие внутренности хорошо видны снаружи.
  • В дополнение к основной функциональности машинного обучения, TensorFlow также включает собственную систему логирования, собственный интерактивный визуализатор логов и даже мощную архитектуру по доставке данных.
  • Модель исполнения TensorFlow отличается от scikit-learn языка Python и от большинства инструментов в R.

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


Как работает TensorFlow? Давайте попробуем разобраться, посмотреть и понять, как работает каждая часть. Мы изучим граф движения данных, который определяет вычисления, через которые предстоит пройти вашим данным, поймем, как тренировать модели градиентным спуском с помощью TensorFlow, и как TensorBoard визуализирует работу с TensorFlow. Наши примеры не помогут решать настоящие проблемы машинного обучения промышленного уровня, но они помогут понять компоненты, которые лежат в основе всего, что создано на TensorFlow, в том числе того, что вы напишите в будущем!

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

Мониторинг торрентов и автоматическая скачка

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

Совсем недавно на Хабре было 2 статьи о том, как автоматизировать процесс скачивания новых серий с торрентов. Авторы обеих статей поделились своими приложениями. Вот уже год мы тоже разрабатываем подобное приложение и мне кажется, пришло время рассказать хабрасообществу о нашем маленьком, но прекрасном проекте Monitorrent, который, возможно, сделает вашу жизнь настолько проще и удобнее, насколько сделал нашу.


Main Page


Веб приложение написано на Python 2 (с поддержкой Python 3). Оно позволяет добавлять новые торренты для мониторинга, автоматически скачивать новые серии и добавлять их в торрент клиент.


Мы им пользуемся на постоянной основе с конца прошлого года, а 1 мая 2016 мы выпустили первую релизную версию, которая без каких-либо сбоев крутится до сих пор на cubietruck в docker контейнере.


За подробностями того как оно работает внутри прошу под

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

Анонс Rust 1.10

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

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


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


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


В Rust 1.10 стала доступна одна из наиболее желаемых сообществом возможностей: прерывание работы (abort) при панике вместо размотки стека. Это поведение управляется флагом -C panic=abort или настройкой в Cargo.toml. Зачем это нужно? Как вы помните, паника означает непридвиденную проблему, и для многих приложений abort — разумный выбор. При использовании panic=abort генерируется меньше кода, что означает меньшие по объёму исполняемые файлы и чуть меньшее время компиляции. Очень приблизительная оценка говорит об уменьшении на 10% и размера файла, и времени компиляции. Эта возможность была определена в RFC 1513.

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

Аврал: вы работаете изо всех сил, чтобы успеть к дедлайну. Что теперь?

Время на прочтение10 мин
Охват и читатели26K
Автор статьи, Мэтью Бёрнс, напряжённо работал над такими игровыми франшизами, как Halo, Call of Duty и Destiny. Он писатель и разработчик игр из Сиэтла.



Аврал, или работа с полным напряжением сил в попытках успеть к дедлайну (на сленге англоязычных программистов – кранч [crunch]) – прискорбное явление в нашей индустрии. И пока кто-нибудь не придумает решения этой проблемы, что нам с ним делать?

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

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

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

Концепт фреймворка и языка пятого поколения

Время на прочтение1 мин
Охват и читатели5.2K
Язык пятого поколения: программист должен думать об алгоритмах, а не о языке.
Но это не означает, что язык должен быть в виде блок-схем, как об этом пишут интернеты.
Долой экранирование символов в строках, да здравствуют составные операторы любой сложности.
Это и другое в моем видео.

Рендер в текстуру с использованием Three.js

Время на прочтение3 мин
Охват и читатели13K
Всё, что вы рендерите в Three.js, по умолчанию отображается на экране. Зачем вообще нужен рендеринг, если нельзя увидеть результат? Оказывается, затем, чтобы собрать данные, прежде чем они выведутся на экран (и, следовательно, будут утеряны). Это намного упрощает применение эффектов постобработки, таких как коррекция/искажение цветов и размытие изображения, а также очень полезно для шейдерных эффектов. Такой прием называется рендеринг в текстуру или рендеринг в буфер кадра. Конечный результат сохраняется в текстуре, которую затем можно отобразить на экране. В этой статье я покажу, как это делается, на конкретном примере рендеринга анимированного куба на поверхность другого анимированного куба.


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

Введение в ReactiveUI: изучаем команды

Время на прочтение19 мин
Охват и читатели36K
Часть 1: Введение в ReactiveUI: прокачиваем свойства во ViewModel
Часть 2: Введение в ReactiveUI: коллекции

Мы уже обсудили возможности ReactiveUI, связанные с работой со свойствами, выстраиванием зависимостей между ними, а также с работой с коллекциями. Это одни из основных примитивов, на базе которых строится разработка с применением ReactiveUI. Еще одним таким примитивом являются команды, которые мы и рассмотрим в этой части. Команды инкапсулируют действия, которые производятся в ответ на некоторое событие: обычно это запрос пользователя или какие-то отслеживаемые изменения. Мы узнаем, что можно сделать с помощью команд в ReactiveUI, обсудим особенности их работы и выясним, чем команды в ReactiveUI отличаются от команд, с которыми мы знакомы по WPF и его родственникам.
Но прежде чем перейти к командам, рассмотрим более широкие темы, касающиеся реактивного программирования в целом: связь между Task<T> и IObservable<T>, и что такое горячие и холодные последовательности.
Читать дальше →

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