Pull to refresh
0
0
Send message

Изучаем многопоточное программирование в Go по картинкам

Reading time8 min
Views69K

Скорее всего, вы уже слышали о языке программирования Go, популярность его постоянно растет, что вполне обоснованно. Этот язык простой, быстрый и опирается на прекрасное сообщество. Один из самых любопытных аспектов языка — это модель многопоточного программирования. Примитивы, положенные в ее основу, позволяют создавать многопоточные программы легко и просто. Эта статья предназначена для тех, кто хочет изучить эти примитивы: горутины и каналы. И, через иллюстрации, я покажу, как с ними работать. Надеюсь, это будет для вас хорошим подспорьем в дальнейшем изучении.
Читать дальше →
Total votes 50: ↑48 and ↓2+46
Comments21

Как стать Flutter-разработчиком бесплатно? Программа обучения с нуля

Level of difficultyEasy
Reading time2 min
Views11K

Мои знакомые часто интересуются, стоит ли им входить в IT и на кого учиться. Обычно я отвечаю, что если человек визуал, есть смысл попробовать Flutter. Во-первых, это востребовано. Во-вторых, достаточно просто на начальном этапе. А в третьих, это классный инструмент для разработки кроссплатформенных приложений.

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

Читать далее
Total votes 14: ↑11 and ↓3+8
Comments13

Введение в нейросети: что, зачем и как?

Level of difficultyMedium
Reading time25 min
Views31K

Это модное слово всё чаще используется в разговорной речи: обывателей плотнее окутывают угрозами бунта искусственного интеллекта и войны с роботами — с одной стороны, и рекламой нейросетевых продуктов — с другой. Отдельный котёл в аду — для тех, кто впаривает «курсы дата‑саентистов». А когда бедный юзернейм в поисках истины обращается к Гуглу своему любимому поисковику — то вместо простого ответа на простой вопрос, получает ещё больше вопросов — таких как тензорфлоу, сигмоида и, не дай Бог, линейная алгебра.

Как же нейросети рисуют картинки?
Total votes 58: ↑56 and ↓2+54
Comments25

Смарт-контракты на WebAssembly: зачем это надо и как работает

Level of difficultyMedium
Reading time10 min
Views2.5K

В последнее время многие блокчейн-платформы для исполнения смарт-контрактов переключились на WASM — WebAssembly. Мы не стали исключением, и в последнем обновлении тоже добавили WebAssembly как альтернативу привычному Docker. В этом посте мы расскажем, для каких задач нам потребовался именно WASM, что мы достигли с ним на сегодня и как WASM отражается на производительности блокчейна.

Читать далее
Total votes 18: ↑17 and ↓1+16
Comments2

Как работает аппаратный ключ безопасности — и почему не сделать программируемый ключ с улучшенной защитой?

Reading time4 min
Views16K


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

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

Давайте посмотрим, как сделаны такие ключи, кто их выпускает. И самое главное — как их сделать ещё лучше.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments20

О массивах и слайсах в Go

Level of difficultyMedium
Reading time6 min
Views18K

Массивы в Go являлись для меня одной из сложных тем, так как я не понимал как они работают. В данной статье рассмотрим как же именно работают слайсы и массивы в Go, а также как именно работает append и copy.

Читать далее
Total votes 13: ↑11 and ↓2+9
Comments14

Godot — это не новая Unity. Анатомия вызова API в Godot

Reading time26 min
Views24K

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

Апдейт: ведущий разработчик Godot Хуан Линьетски опубликовал ответ на этот пост.

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments35

Mysql против Sql Server – кто кого?

Reading time1 min
Views10K
Рискну завести холиварную тему :)
Я думаю, чтоб все согласятся с тем, что по фукнционалу Mysql значительно проигрывает Sql Server-у. На мой взгляд, не выигрывает Mysql и по критерию бесплатности: у Sql Server есть бесплатная Express-версия, которая, в отличие от конкурента, может быть использована в коммерческих разработках без лицензионных ограничений.
Но сейчас речь не об этом. Для меня самый интересный был вопрос производительности. Тестам от производителей верить сложновато, поэтому я решил провести собственный тест.
Для этого я взял базу данных AdventureWorks и перегнал ее в Mysql (получился дамп размером около 100 Мб) с сохранением всех ключей, индексов и т.п. После чего написал тестовое приложение на .Net, которое бы гоняло одни и те же запросы по базам, причем можно варьировать количество одновременно работающих потоков. В запросы подставлялись случайные числовые и строковые значения (в условия where, order by и т.п.), чтобы они не кешировались. Никакие оптимизации не проводились ни на одном из серверов.
Ну перейдем сразу к делу :)
Простые запросы SELECT (с условиями where, order by, limit / top):
image

Сложные запросы SELECT (с различными join, вложенные запросы):
image

Пока нет запросов на вставку/удаление/обновление, нет триггеров и хранимых процедур. И пока нет исходников самой программы, дампов базы данных и т.п. Это все нужно оформлять, но если интересно – я займусь :)
Total votes 52: ↑26 and ↓260
Comments55

Перевод первой части учебника Patterns.dev

Reading time11 min
Views15K

Привет! Меня зовут Айнур, и я frontend-разработчик SimbirSoft. Более 6 лет я работаю над коммерческими проектами, создаю и улучшаю интерфейсы, поэтому в работе достаточно часто использую паттерны проектирования. Неоднократно я обращался за идеями и лайфхаками к книге Patterns.dev, которая содержит очень современный взгляд на шаблоны проектирования, рендеринга и производительности JavaScript.

Авторы Patterns.dev:

Лидия Холли — штатный консультант и преподаватель по разработке программного обеспечения, которая в основном работает с JavaScript, React, Node, GraphQL. Она также занимается наставничеством и проводит личные тренинги.

Эдди Османи — технический менеджер, работающий над Google Chrome. Его команды работают над такими проектами, как Lighthouse, PageSpeed ​​Insights, Chrome User Experience Report и другими.

Материал книги будет полезен не только React-разработчикам, но и всем, кто так или иначе интересуется или сталкивается с frontend-разработкой.

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

Источник: https://www.patterns.dev/
Данный адаптированный материал распространяется на условиях лицензии Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments5

Безопасная разработка в Java

Level of difficultyEasy
Reading time9 min
Views7.1K

Язык программирования Java является одним из самых распространенных языков программирования. На нем написано множество сложных приложений как под Linux, так и под Windows. Однако, как и у любого другого языка программирования, у Java есть свои уязвимости.

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

Читать далее
Total votes 12: ↑8 and ↓4+4
Comments7

REST API с использованием Spring Security и JWT

Reading time14 min
Views84K

Рано или поздно каждый Java-разработчик столкнется с необходимостью реализовать защищенное REST API приложение. В этой статье хочу поделиться своей реализацией этой задачи.

Читать далее
Total votes 8: ↑4 and ↓40
Comments11

10 отличных Github репозиториев для разработчиков (часть 2)

Reading time4 min
Views16K

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



Как и в прошлом случае, перевод будет довольно вольным: я опустил предисловие и эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, поехали.
Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments5

Инструменты для запуска и разработки Java приложений, компиляция, выполнение на JVM

Reading time9 min
Views60K

Ни для кого не секрет, что на данный момент Java — один из самых популярных языков программирования в мире. Дата официального выпуска Java — 23 мая 1995 года.

Эта статья посвящена основам основ: в ней изложены базовые особенности языка, которые придутся кстати начинающим “джавистам”, а опытные Java-разработчики смогут освежить свои знания.

* Статья подготовлена на основе доклада Евгения Фраймана — Java разработчика компании IntexSoft.
В статье присутствуют ссылки на внешние материалы
.




Читать дальше →
Total votes 14: ↑11 and ↓3+8
Comments7

Spring: в поисках контекста

Reading time9 min
Views38K

Пару месяцев назад в моем профиле был опубликован подробный пост по загрузке классов на JVM. После этого доклада мои коллеги задались хорошим вопросом: а какой механизм использует Spring для разбора конфигураций и как он загружает классы из контекста?


Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments1

Работа с Java в командной строке

Reading time11 min
Views641K
Сейчас уже никто не создает программы в консоли. Используя любимую IDE, разработчик чувствует себя неуютно за чужим компьютером, где её нет.
Решив разобраться в работе Ant и Maven, я поймал себя на том, что не смогу собрать приложение без них в консоли.
В данной статье я постарался уместить все этапы проектирования демонстрационного приложения, чтобы не искать справку по каждой команде на просторах Интернета.
Читать дальше →
Total votes 75: ↑71 and ↓4+67
Comments25

Библиотека алгоритмов на графах на языке Go. Часть 1

Reading time5 min
Views8.6K

Приветствую тебя, дорогой читатель! Мне 21, я студент и младший Go-разработчик, а это - мой первый пост на Хабре. Недавно в компании с одногруппником мы решили взяться за амбициозный проект и я решил, что он, как никакой другой, подходит под первую статью. Проект заключается в создании библиотеки, содержащей основные алгоритмы на графах.

Читать далее
Total votes 9: ↑7 and ↓2+5
Comments10

Qooxdoo. Разрабатываем TODO List

Reading time15 min
Views18K
На сегодняшний день существует великое множество javascript фреймворков, по многим из них написаны горы документации. Я хотел бы остановиться на фреймворке, который, по неизвестной мне причине, не пользуется особой популярностью у российских разработчиков.

Фреймворк называется qooxdoo. Произносится «куксду» (кому удобнее английская транстрипция: ['kuksdu:]).

На Хабре было несколько попыток написать про этот фреймворк, но все они свелись к новостям о выходе новой версии или к парам абзацев в статьях типа «смотрите каких фреймворков понаписали». Я несколько лет работаю с qooxdoo и мне хотелось бы восполнить этот пробел.
Читать дальше →
Total votes 23: ↑18 and ↓5+13
Comments9

Изучаем PostgreSQL. Часть 1. Знакомимся с архитектурой

Reading time8 min
Views92K

 На сегодняшний день существует большое количество различных систем управления базами данных - СУБД, от коммерческих до открытых, от реляционных до новомодных NoSQL и аналогичных.

Одним из лидеров направления СУБД является PostgreSQL и ее различные ответвления, о некоторых из которых мы рассмотрим подробнее.

В этой статье мы начнем говорить о СУБД PostgreSQL, рассмотрим отличия редакций и некоторые особенности архитектуры, а также процесс установки. Но начнем мы с небольшого ликбеза для того, чтобы читатели плохо знакомые с терминологией баз данных могли быстро войти в курс дела.

Итак, схемой мы будем называть логическое объединение таблиц в базе данных, а сама БД это физическое объединение таблиц. Индекс - отношение, которое содержит данные, полученные из таблицы или материализованного представления. Его внутренняя структура поддерживает быстрое извлечение и доступ к исходным данным.

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

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

Читать далее
Total votes 22: ↑15 and ↓7+8
Comments8

Ваш путеводитель по миру NLP (обработке естественного языка)

Reading time13 min
Views15K

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

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

Читать далее
Total votes 10: ↑6 and ↓4+2
Comments0

Information

Rating
Does not participate
Registered
Activity