Все потоки
Поиск
Написать публикацию
Обновить
1038.43

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

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

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

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

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

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


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

Разгоняем производительность 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. И приглашаем всех, кто интересуется сферой информационных технологий или хочет попробовать себя в различных направлениях программирования, веб-дизайна и интернет-маркетинга.
Читать дальше →

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

Думаешь, ты знаешь Си?

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

Многие программисты утверждают, что знают С. Ну что ж, у него самый известный синтаксис, он существует уже 44 года и он не захламлен непонятными функциями. Он прост!

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

Если вы думаете что он прост — пройдите этот тест. В нем всего 5 вопросов. Каждый вопрос в принципе одинаковый: какое будет значение возврата?

TDD не работает

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


TDD не работает.


Правда? Странно. У меня всегда работал хорошо.


А вот новое исследование говорит об обратном.


Новое исследование?


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


Авторы считают его убедительным?


Авторы рекомендуют проводить новые исследования. Но они скорее всего просто скромничают. Результаты довольно убедительные.


Какие результаты?

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

Freeform распознавание речи в реальном времени и распознавание записей звонков

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

Мы уже писали про возможность создания сценариев с распознаванием речи, но тогда функционал данной системы был несколько ограничен. Не так давно компания Google открыла доступ к системе распознавания речи. И мы, конечно же, этим воспользовались. Многие компании реализуют разные сценарии взаимодействия со своими клиентами с помощью Voximplant. Автоматизация с помощью распознавания речи и поиск в уже распознанном позволяют бизнесу тратить меньше сил на ручную работу и больше — на то, что действительно важно. Далее мы подробно расскажем про несколько основных кейсов, ради которых делали интеграцию, и про проблемы, с которыми столкнулись в процессе, а также приведем несколько примеров использования нового функционала.
Попробовать демо и почитать, как оно сделано

Марсоход, Инициализация

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


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

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


Cначала нам нужно инициализировать наш проект.
Читать дальше →

Как разработать приложение для автоматизации почти не умея программировать. Придется выучить IDE…

Время на прочтение5 мин
Количество просмотров19K
Хочешь создать свой проект в «железе», который перевернет мир с ног на голову? Или автоматизировать управление светом в коридоре. При этом ты не специалист в программировании микроконтроллеров, но разобрался с arduino и тем как моргать её светодиодами и только узнал о полевых транзисторах, симисторах, 1-Wire. Теперь хочешь управлять всем этим хозяйством и предоставить доступ через интернет и хранить данные в облаке.



Или ты дружишь с паяльником, гуру программирования ПЛК, снифишь PDU в modbus. Но компьютер с Windows и SCADA слишком дорог для проекта или не подходит почему-то еще… И хочется запускать программу на одноплатном компьютере Raspberry PI с доступом к ее переферии GPIO, I2C.
Читать дальше →

Разработка на базе фреймворка COREmanager. Как наши партнёры создавали решение для аутсорсинга техподдержки

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


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

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

Под катом — подробности разработки системы для аутсорс-техподдержки компанией ISPlicense.

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

Языку программирования Go — семь лет

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

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

Что такое Go и чем он хорош, мы описывать не будем: кто в теме, знают и так, а остальные могут почитать в Википедии. Уже вчера мы поделились с вами полезным переводом 50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков, а сегодня передаём слово нашим разработчикам, пишущим на Go. В честь годовщины мы задали каждому из них три вопроса:

  1. Почему ты выбрал Go (плюсы/минусы)?
  2. Что ты уже написал на Go?
  3. Как лучше изучать Go, что посоветуешь начинающим?

Вот что они ответили.
Читать дальше →

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