В первой части этой статьи основное внимание будет уделено потокам и блокировкам в С++11, условные переменные во всей своей красе будут подробно рассмотрены во второй части…
Михаил @Prost971
Инженер-программист Qt
Чеклист по UX из 30 пунктов для мобильных приложений
7 min
31KTranslation
Эта статья — напминалка о том, что нужно перепроверить в дизайне вашего приложения, прежде чем отсылать его на AppStore/GooglePlay. Список поделен на тематические блоки:
- Вход / Регистрация
- Первый опыт
- Ежедневные взаимодействия
- Уведомления
- Параметры аккаунта
- Лента
- Поиск
- AppStore/GooglePlay
+32
Как сделать корутины в Unity немного удобнее
9 min
26KTutorial
Каждый разработчик находит свои преимущества и недостатки использования корутин в Unity. И сам решает в каких сценариях их применить, а в каких отдать предпочтение альтернативам.
В повседневной практике я достаточно часто использую корутины для различных видов задач. Однажды, я понял, что именно меня в них раздражает и отторгает многих новичков.
+11
10 способов улучшить свои навыки программирования
4 min
88KTranslation
1. Выучить новый язык программирования
Изучение нового языка программирования разовьет новые способы мышления, особенно если новый язык программирования использует парадигмы, с которыми Вы еще не знакомы. Многие из приобретенных способов мышления могут быть применены к языкам, которые уже знаете. Возможно, вы даже полюбите новый для Вас язык программирования настолько, что начнёте использовать его для серьёзных проектов.
Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp (или Scheme), Форт, PostScript или Factor (стековые языки программирования), Haskell (строго типизированный, чистый функциональный язык) либо OCaml (объектно-ориентированный язык функционального программирования), Пролог (логическое программирование), Erlang (отличные паралельные вычисления).
+215
Учим Python качественно
4 min
1.4MЗдравствуйте всем!
Решил поделиться методом обучения сего мощного, но в одно и тоже время лёгкого языка программирования. Он действительно лёгкий. Вам не надо будет запоминать и вводить лишних символов, которые Вы можете встретить в Си-подобных языках.
Удобочитаемый синтаксис, прост в обучении, высокоуровневый язык, Объектно-Ориентированый язык программирования (ООП), мощный, интерактивный режим, масса библиотек. Множество иных плюсов… И это всё в одном языке.
Для начала окунёмся в возможности и узнаем, что же умеет Python?
Решил поделиться методом обучения сего мощного, но в одно и тоже время лёгкого языка программирования. Он действительно лёгкий. Вам не надо будет запоминать и вводить лишних символов, которые Вы можете встретить в Си-подобных языках.
Удобочитаемый синтаксис, прост в обучении, высокоуровневый язык, Объектно-Ориентированый язык программирования (ООП), мощный, интерактивный режим, масса библиотек. Множество иных плюсов… И это всё в одном языке.
Для начала окунёмся в возможности и узнаем, что же умеет Python?
+32
Я и код: как стать востребованным программистом
5 min
13KПосле одного из недавних постов мы получили много интересных вопросов и комментариев. В том числе вы хотели знать, как, по нашему мнению, стать востребованным программистом.
Проекты краснодарской студии Plarium значительно отличаются друг от друга по используемому стеку технологий. Нам приходится решать разноплановые задачи и задействовать большое количество профессионалов. Программисты — важная часть команды Plarium Krasnodar. Всего над созданием кода в проектах студии трудятся свыше 50 наших коллег.
Мы проанализировали их опыт и готовы ответить на поступившие вопросы.
Проекты краснодарской студии Plarium значительно отличаются друг от друга по используемому стеку технологий. Нам приходится решать разноплановые задачи и задействовать большое количество профессионалов. Программисты — важная часть команды Plarium Krasnodar. Всего над созданием кода в проектах студии трудятся свыше 50 наших коллег.
Мы проанализировали их опыт и готовы ответить на поступившие вопросы.
-2
101 совет, как стать хорошим программистом (и человеком)
12 min
47KTranslation
1. Научитесь гуглить
Быть программистом, — значит научиться искать ответы на свои вопросы. Научившись эффективно «гуглить», вы сэкономите много времени, затрачиваемого на разработку.
2. Не обещайте много, но делайте больше, чем обещали
Лучше сообщать вашей команде, что выполнение задачи займет три недели, но выполнять её за две, чем наоборот. Следуя этому принципу, вы выстроите доверительные отношения.
+19
Пот, слезы и учет времени — как мы повышали рентабельность компании
11 min
16KМы продолжаем делиться внутренней кухней WebCanape и выдавать все наши самые страшные тайны. В прошлый раз я рассказывал, как мы разработали CRM для SEOшников, а сейчас поведаю о том, как мы ведем учет рабочего времени и зачем вообще это делаем.
В штате компании – 90 человек. Управлять таким количеством сотрудников и контролировать их не у всех получается хорошо. Из-за неэффективного управления может проседать качество услуг компании, снижаться рентабельность проектов, ухудшаться общий климат в офисе. Чтобы этого избежать, мы внедрили у себя мониторинг эффективности работы сотрудника.
В штате компании – 90 человек. Управлять таким количеством сотрудников и контролировать их не у всех получается хорошо. Из-за неэффективного управления может проседать качество услуг компании, снижаться рентабельность проектов, ухудшаться общий климат в офисе. Чтобы этого избежать, мы внедрили у себя мониторинг эффективности работы сотрудника.
+6
Суперсовременный OpenGL. Часть 2
7 min
19KВсем хорошего настроения и температуры за окном пониже. Как и обещал, публикую продолжение статьи по супер-пупер современному OpenGL. Кто не читал первую часть — Суперсовременный OpenGL. Часть 1.
Возможно повезет и я смогу весь оставшийся материал впихнуть в эту статью, это не точно…
+16
Как начать писать тесты за 10 шагов по 10 минут
7 min
79KTutorial
Дайте-ка угадаю: вы согласны с тем, что писать тесты — это хорошо. Это повышает надежность системы, ускоряет разработку, проект с хорошим тестовым покрытием поддерживать легко и приятно, а TDD — это вообще почти идеал процесса разработки. Но не у вас в проекте. То есть, оно клёво, но, к сожалению, сейчас столько работы — просто завал. Куча задач, одних только критических багов — два десятка, плюс надо срочно дописать этот модуль и еще написать письмо заказчику… Так что тесты, наверное, будем прикручивать уже в конце, если время останется. Или в следующем проекте. Нет, ну там точно полегче будет. Скорее всего.
Как, узнали ситуацию?
Так вот — чушь всё это. Сфера ИТ — бесконечна, как вселенная, куча работы будет всегда. Можно или начать писать тесты прямо сейчас, или не сделать этого никогда. Я тут набросал короткий план, как начать это делать за 10 шагов, по шагу в день, по 10 минут на шаг. И когда я говорю «10 минут» я имею в виду не «3 с половиной часа» и не «ну сколько-то времени, лучше побольше», а именно 600 секунд. Если у вас нету в день 600 секунд свободного времени — срочно меняйте проект, работу, профессию, страну проживания (нужное подчеркнуть), потому что это не жизнь, а каторга какая-то. Поехали.
Как, узнали ситуацию?
Так вот — чушь всё это. Сфера ИТ — бесконечна, как вселенная, куча работы будет всегда. Можно или начать писать тесты прямо сейчас, или не сделать этого никогда. Я тут набросал короткий план, как начать это делать за 10 шагов, по шагу в день, по 10 минут на шаг. И когда я говорю «10 минут» я имею в виду не «3 с половиной часа» и не «ну сколько-то времени, лучше побольше», а именно 600 секунд. Если у вас нету в день 600 секунд свободного времени — срочно меняйте проект, работу, профессию, страну проживания (нужное подчеркнуть), потому что это не жизнь, а каторга какая-то. Поехали.
+60
Одноэкземплярные приложения на Qt
3 min
26KСейчас я активно пишу под Qt. И встала у меня задачка проверить при запуске приложения, а не запущено ли оно уже. Под линуксом. Велосипеды городить не хотелось, хотелось родить что-то используя готовые классы Qt, чтобы сразу было кроссплатформенно. В винде, например, есть готовое решение — именованные мьютексы (или семафоры, неважно, главное именованные). Стал гуглить. Ага, в Qt есть нечто подобное, называется
QSystemSemaphore
. +25
+18
Спецификатор времени компиляции noexcept в C++11
5 min
71KС новым стандартом С++ появилось множество интересных и полезных улучшений, одно из которых спецификатор времени компиляции noexcept, которой говорит компилятору о том, что функция не будет выбрасывать исключения. Если интересно, какие преимущества предоставляет этот спецификатор и не пугает код на С++ — добро пожаловать под кат.
+23
Что нового в работе с исключениями в C++11
8 min
43KВ интернете довольно много говорят о новых возможностях C++11: auto, lambda, variadic templates. Но как-то обошли стороной новые возможности работы с исключениями, которые предоставляет язык и стандартная библиотека.
От предыдущей версии стандарта остался механизм генерации исключений (throw), проверка того, что мы находимся в процессе обработки исключения (std::uncaught_exception), механизм остановки, если исключение не было обработано. Также есть иерархия стандартных исключений на базе класса std::exception.
Новый стандарт добавляет к этим вещам еще несколько сущностей, которые, на мой взгляд, могут существенно упростить работу с исключениями в C++.
От предыдущей версии стандарта остался механизм генерации исключений (throw), проверка того, что мы находимся в процессе обработки исключения (std::uncaught_exception), механизм остановки, если исключение не было обработано. Также есть иерархия стандартных исключений на базе класса std::exception.
Новый стандарт добавляет к этим вещам еще несколько сущностей, которые, на мой взгляд, могут существенно упростить работу с исключениями в C++.
+55
Пишем свой std::function (boost::function)
7 min
64KКлассы std::function и boost::function являются высокоуровневыми обертками над функциями и функциональными объектами. Объекты таких классов позволяют хранить и вызывать функции и функторы с заданной сигнатурой, что бывает удобно, например, при создании callback вызовов (например, мы можем регистрировать несколько обработчиков, и это могут быть как обычные функции, так и объекты с определенным оператором =)
Если вам интересно, каким образом реализуется данный функционал, то прошу под кат
Если вам интересно, каким образом реализуется данный функционал, то прошу под кат
+39
Наивная реализация std::bind(boost::bind)
6 min
48KНаверное, трудно найти такого программиста на C++, который никогда не применял в своем коде boost::bind (с выходом c++11 std::bind). Bind — шаблонная функция, возвращающая обёртку над callable-объектом (т.е. объектом, который можно вызвать, передав ему необходимое число аргументов в круглых скобочках). Bind позволяет изменить сигнатуру вызова такого объекта, сократив число входных аргументов или поменяв какие-то из них местами. Кому интересно, как это может быть реализовано с использованием C++11, прошу под кат.
+26
Большой 7-сегментный дисплей c неоновым свечением на ESP8266
1 min
12KTranslation
Мне нужно было сделать для работы электронный дисплей большого размера с функцией секундомера и неоновым свечением.
Для управления был выбран чип ESP8266, в котором реализованы и функция часов, и секундомер.
Чтобы получить неоновое свечение я применил цилиндры термоклея. В конец каждой трубки я приклеил по одному светодиоду.
+25
Как я имплантировала RFID себе в руку, а потом еще NFC. Часть 2
6 min
88KПрошло более четырех лет с момента публикации первой части про EM4100 и я решила все же написать вторую часть — про имплантируемый NFC.
Преимущества первой 125 кГц метки были ощутимы сразу — ключ к домофонам и внутренним замкам, но хотелось большего — разблокировать телефон, ноутбук, хранить данные в защищенном месте. Все это позволяет сделать метка NFC стандарта.
Подробнее про процесс имплантации без помощи посторонних, использование и недостатки — под катом.
Преимущества первой 125 кГц метки были ощутимы сразу — ключ к домофонам и внутренним замкам, но хотелось большего — разблокировать телефон, ноутбук, хранить данные в защищенном месте. Все это позволяет сделать метка NFC стандарта.
Подробнее про процесс имплантации без помощи посторонних, использование и недостатки — под катом.
+75
В марте 2017 года в поддержку Тинькофф Банка позвонил клиент. Он только что продал со смартфона акции Apple, стоял в магазине и хотел расплатиться вырученными деньгами. Но вывод денег на карту занимает 20 минут. Тут мы поняли — чтобы обходить продуктовые ограничения, нужна собственная брокерская платформа.
Разработчики и продуктологи Тинькофф Банка рассказывают, как создавали своего брокера.
+53
Как получить максимум от инвестиционного портфеля?
4 min
16KДурак сказал: «Не клади все яйца в одну корзину!» - иными словами: распыляй свои интересы и деньги! А мудрец сказал: «Клади все яйца в одну корзину, но… береги корзину!». Эта фраза принадлежит Марку Твену, но ее «мудрую» часть вы наверняка слышали от Уоррена Баффетта. Да, легендарный инвестор не является сторонником распределения активов и вкладывается исключительно в американские акции.
Оправдан ли такой подход и так ли полезна диверсификация портфеля, как о ней говорят? Давайте проверим. Для этого возьмем наиболее популярные для инвестирования биржевые ETF-фонды и посмотрим, насколько они эффективны при объединении в портфель. А заодно выясним, влияет ли число фондов в портфеле на его результативность.
Оправдан ли такой подход и так ли полезна диверсификация портфеля, как о ней говорят? Давайте проверим. Для этого возьмем наиболее популярные для инвестирования биржевые ETF-фонды и посмотрим, насколько они эффективны при объединении в портфель. А заодно выясним, влияет ли число фондов в портфеле на его результативность.
+9
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity