Как стать автором
Обновить
1062.13

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

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

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

Переезд на кластер под управлением «1С-Битрикс: Веб-окружение»

Время на прочтение8 мин
Количество просмотров15K
В определённый момент появилась задача — перевести, существующий и активно работающий в production, проект на работу в кластере серверов. Т.к. проект разработан на базе 1C-Bitrix, было принято решение построить кластер с использованием «1С-Битрикс»: Веб-окружение». Цель данного мероприятия — получить возможность выдерживать большие нагрузки при наплывах посетителей сайта, а также возможность в дальнейшем быстрее масштабироваться горизонтально.
Читать дальше →

3 книги по C++ 17 (на английском)

Время на прочтение2 мин
Количество просмотров10K
Сегодня мы рассказываем вам о трех книгах, написанных нашими Microsoft MVP, по C++ 17. Они могут быть хорошими отправными точками в пути ознакомления с новой версией этого языка программирования. Все они продаются в электронном и бумажном виде на онлайн площадках (от €8.64 до $42.99 за электронные версии).

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

Открытый вебинар «Многопоточность в Java. По ту сторону от synchronized-notifyAll»

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

Мы продолжаем давать открытые уроки по нашему курсу «Разработчик Java». Сегодня мы хотим поделиться второй частью посвящённой многопоточности. Если в первой части рассматривались базисы многопоточности плюс был написан Ping-Pong с применением synchronized-notifyAll, то в новой части уже идёт более углубленное изучение, а Ping-Pong переписали в разных вариациях уже без synchronized-notifyAll


Ждём комментарии и вопрос, которые можно задать тут или зайти к Виталию на день открытых дверей.

Как я начал карьеру разработчика с нуля и получил оффер всего через 10 месяцев

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


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

От автора: Моя история — о том, как у меня получилось с нуля начать карьеру frontend-разработчика, не имея никакого специального образования или опыта. Я учился самостоятельно, одновременно работая по 8 часов в день. Через 10 месяцев я получил работу по новой специальности.

Как с треском провалить миграцию с Java на Kotlin в Android приложении

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

Как с треском провалить миграцию с Java на Kotlin в Android приложении


С тех пор, как Google объявила об официальной поддержке Kotlin в Android, всё больше разработчиков хотят использовать его в своих новых и существующих проектах. Поскольку я также большой поклонник Kotlin, я не мог дождаться, когда смогу использовать Kotlin в своём рабочем проекте. В конце концов, Kotlin полностью совместим с Java, и все разработчики просто в восторге от этого. Так что же может пойти не так?

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

Целочисленная арифметика. Делим с округлением результата. Часть 1

Время на прочтение2 мин
Количество просмотров22K
Чем проще, на первый взгляд, задача, тем меньше разработчик вдумывается в то, как грамотно её реализовать, и допущенную ошибку, в лучшем случае, обнаруживает поздно, в худшем — не замечает вовсе. Речь пойдет об одной из таких задач, а именно, о дробном делении и о масштабировании в контроллерах, поддерживающих исключительно целочисленную арифметику.

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

64-битный hashmap в JS

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

Как бы вы сделали быстрый hashmap для 64-битных ключей? Если ключи 32-битные, то вряд ли можно сделать что то быстрее чем встроенный ES6 Map, но если ключи 64 битные, то начинаются сложности потому что JS застрял на 32-битном int.


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

Вредные советы для программистов 1С

Время на прочтение4 мин
Количество просмотров11K
На Хабре много специфичных людей. Есть программисты, системные администраторы, эникейщики, сотрудники тех.поддержки, менеджеры проектов, руководители компаний, владельцы продуктов, технические писатели и т.д.

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

Но есть исключение, и вы уже догадались, о ком речь. Несчастные, презираемые, ненавидимые или игнорируемые большинством 1Сники.

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

Но большинство 1Сников, увы, не такие. Скромные, тихие, считающие свою «одинэсность» — постыдным недостатком, психическим или физическим заболеванием. Читая Хабр, они вынуждены скрывать свои «желтые трусы», чтобы не быть с позором изгнанными, оплеванными и поруганными.

Они читают о разработке игр, веб-приложений, машинном обучении, работе за рубежом, Google и Apple, и плачут. А потом отторгают, злятся, бросают читать, возвращаются в бухгалтерию… Но возвращаются снова и читают.

Публикация — для них.

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

Съесть три «пончика» из UWP и не подавиться

Время на прочтение4 мин
Количество просмотров4.1K
Привет, Хабр! UWP — это платформа для Windows 10, с помощью которой можно разрабатывать приложения, используя один набор API, один пакет приложения и один магазин. Этого достаточно для обеспечения работы приложений на всех устройствах под управлением Windows10 — компьютере, планшете, телефоне, Xbox, HoloLens, Surface Hub и других. В этой статье мы дадим ответы на три часто задаваемых вопроса при работе с UWP: о кастомизации иконок, о показе настроек в окне и об ограничении доступа. Заглядывайте под кат!

Статья подготовлена совместно с активным участником сообщества Microsoft Developer, Алексеем Плотниковым.

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

Программирование как искусство или как написать «Калькулятор» за 30 дней

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

Доводилось ли тебе, дорогой читатель, когда-нибудь писать рассказы? Может быть это было сочинение в школе или эссе на тему «Как я провел Лето» «Смысл жизни» на факультете психологии в университете. Всегда от пишущего требовали одного, донести свои мысли четко и, по возможности, интересно. Мне хотелось бы поделиться с тобой историей о том, как я писал рассказ, в котором объяснял почему $2+2=4$ и почему $2+2*2=6$. Статья несет в себе цель не сколько описать техническую сторону программирования, сколько ее эстетическую часть и, что главное, описать психологию программирования. Сопровождаться сия статья будет ссылками на коммиты в GitHub.

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

Области сокрытия кода и рефакторинг

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

Одним из главных аспектов при разработке программного обеспечения вообще и web-приложений в частности я считаю способность программного обеспечения быть изменяемым — адаптируемым к изменениям окружающего мира. Это не значит, что разработчик должен заранее предусмотреть будущие изменения среды обитания своего кода, это значит, что код должен переносить множество циклов рефакторинга, оставаясь при этом работоспособным как можно дольше. А для этого нужно, чтобы последствия изменений, вносимых в код, были либо обозримы, либо предсказуемы. Под катом я суммировал свое понимание областей сокрытия кода, сформировавшееся в результате тесных, практически интимных, отношений с Magento 2 (платформой для построения интернет-магазинов). Изложенное ниже относится во-первых, к языку PHP, во-вторых — к web-приложениям, в-третьих — ко всему остальному.

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

GoToChain: как школьники блокчейн в деревне писали

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

Был жаркий август. Шла очередная летняя школа. На направлении функционального программирования все было неспокойно: вместо пота с нас капали монады, и в небе пролетала хмурая тень Coq-а.


Школа проходила вполне обычно, как и все детские лагеря. После накоживания чисел Пеано на Хаскелле мы пилили компиляторы и интерпретаторы разных сортов и размеров (от самопального до LLVM), писали своё ядро на Rust и обсуждали теорию групп, проводя аналогии с лёгкими французскими романами в общем, было задорно.


А ещё у нас был хакатон. Одна из команд, вдохновившись Zeitgeist и партнёрскими спиннерами, взялась за разработку системы проведения конкурсов и обработки решений с помощью смарт-контрактов, запланировав несколько идей применения блокчейна для сообщества вокруг школы. Какие инновации из этого вышли — под катом.


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

Работа с сервлетами для чайников. GET / POST

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


В прошлой статье Создание сервлетов для чайников. Пошаговое руководство я описал, как создать сервлеты и попытался объяснить, как это работает. В этой статье мы научим наши сервлеты работать с UI через HTTP-запросы GET и POST.

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

  • GET — обрабатывает адресную строку, которая получается при вызове сервлета. Например, site.com/example?action=test&id=10&admin=true
  • POST — обрабатывает загруженный контент (картинку, файл, строки, объектные данные), в общем, всё, что можно передать через HTTP

В Java-сервлете запросы POST и GET обрабатывают соответствующие методы doPost(); и doGet().
Читать дальше →

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

Производительность lambda-выражений в Java 8

Время на прочтение3 мин
Количество просмотров7.4K
В середине 2013 с выходом Java 8, язык начал поддерживать lambda-выражения, с тех пор минуло 4 года, было выпущено множество update-ов, грядет уже и выход Java 9 (которую, вероятно, мы сможем увидеть в этом году, не смотря на постоянные переносы сроков), таким образом на стыке времён, хотелось бы подвести итоги и оценить производительность нового в java и старого, как мир инструмента, дав ему количественную оценку.
socmetr.lambda.comparison
Читать дальше →

Клиент-сервер шаг — за — шагом, от однопоточного до многопоточного (Client-Server step by step)

Время на прочтение11 мин
Количество просмотров20K
Цель публикации показать начинающим Java программистам все этапы создания многопоточного сервера. Для полного понимания данной темы основная информация содержится в комментариях моего кода и в выводимых в консоли сообщениях для лучшего понимания что именно происходит и в какой именно последовательности.

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

Стать востребованным на рынке труда: какие темы нужно знать Java разработчику?

Время на прочтение4 мин
Количество просмотров16K
Нам часто задают вопросы про программу обучения: почему мы предлагаем именно такую программу и почему считаем, что именно специалисты, изучившие темы, которые мы рассматриваем на курсе, будут востребованы на рынке.
Читать дальше →

Модульные приложения на Java. Как?

Время на прочтение6 мин
Количество просмотров18K
То, что в Java не поддерживается модульность, известно всем. Проблема существует давно, и было немало попыток исправить ситуацию. Этой цели посвящен проект Jigsaw. В 2011 планировалось добавить поддержку модульности в Java 7, в 2014 – в Java 8, наконец, было анонсировано, что в конце июля 2017 выйдет Java 9 с возможностью модуляризации. Но что же делать в ожидании этого прекрасного мига?

OSGi спешит на помощь


Для создания по-настоящему модульной архитектуры на языке Java можно воспользоваться OSGi (Open Services Gateway Initiative) – спецификацией динамической модульной системы и сервисной платформы для Java-приложений (разработчик OSGi Alliance). Она описывает модель разработки ПО, при которой компоненты обладают тремя основными признаками модульного приложения. Речь об инкапсуляции (каждый модуль скрывает свою реализацию от внешнего окружения), слабой связности (модули взаимодействуют только с помощью заранее оговоренных контрактов) и динамичности (компоненты можно замещать на лету, без остановки всего приложения). Основой концепции OSGi являются 2 сущности: наборы (Bundles) и сервисы (Services).
Читать дальше →

Снова о числах с плавающей точкой

Время на прочтение10 мин
Количество просмотров18K
Несмотря на то, что вопросам точности компьютерных вычислений посвящено очень много публикаций, некоторые из них, на наш взгляд, всё же остаются не до конца четко раскрытыми. А именно:

1. Какое количество верных цифр n гарантированно имеет десятичное число, представленное двоичным m разрядным кодом в формате числа с плавающей точкой.
2. Как влияет нормализация чисел с плавающей точкой на точность представления числа при его преобразовании из одной системы счисления в другую и при арифметических действиях, выполняемых на компьютере.
3. Как влияет округление числа, представленного в двоичном виде на его десятичный эквивалент.
4. Как положение виртуальной точки в машинном слове влияет на значение числа, представленного в экспоненциальной форме.

Ниже мы попытаемся ответить на эти вопросы.
Читать дальше →

Проблема ООЯП: отсутствует чёткое и обязательное ядро объектно-ориентированного моделирования

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

Здравствуйте коллеги!


Хотелось бы поделиться мыслями об ООЯП и ООП в целом, а также что можно (и, как мне кажется, нужно) сделать на этой основе.


Основные идеи: В современных ООЯП отсутствует чётко выделенное и обязательное ядро моделирования для создания абстракций, основанных только на "чистых" концепциях ООП. Концепция ООП "всё есть объект" не практична. Концепция обмена сообщениями жёстко связана с её реализацией.

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

Открыт приём заявок на VIII Летнюю Школу высокопроизводительных вычислений в области компьютерного зрения

Время на прочтение2 мин
Количество просмотров2.5K
image
Занятия начнутся 15 августа и продлятся ровно одну неделю. К участию в школе приглашаются студенты c уровнем образования не ниже бакалавриата или учащиеся 3-4 курса технических вузов. Все подробности под катом
Читать дальше →

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