Как стать автором
Обновить
-7
0

Пользователь

Отправить сообщение

Легкий сокращатель ссылок на JavaScript, Cloudflare Workers и c Telegram Bot'ом

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

Что делать если нужно быстро создать короткую ссылку? Конечно – использовать сокращатель ссылок. А что если при этом еще и сделать эту ссылку читаемой? Как при этом использовать свой личный домен? А лучше было бы делать это без дополнительных серверов.. Похоже что ответ есть.

Узнать
Всего голосов 4: ↑4 и ↓0+4
Комментарии3

KB2 — Или успеть на все платформы

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

King’s Bounty II, на первый взгляд визуально простая игра, но в ней сосредоточено огромное множество сложных и комплексных технических решений, продиктованных одновременным выходом на все платформы. Отдельным, и, пожалуй, самым сложным  испытанием для команды стало портирование на Nintendo Switch.

Осторожно, Лонгрид!
Рекомендую заготовить чай с печеньками.
Много интересной информации про очень разные технические аспекты разработки.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии7

Как биткоин кошелек с мультиподписью Copay подвергла своих пользователей угрозе

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

Угроза для пользователей возникла из-за использование типа подписи Биткоина SIGHASH_SINGLE( 0x03)

SIGHASH_SINGLE( 0x03) – это тип подписи подписывает все входы и ровно один соответствующий выход транзакции монет Биткоина. Соответствующий вывод имеет тот же индекс, что и ваша подпись (т. е. если ваш ввод находится на vin 0, то вывод, который вы хотите подписать, должен иметь vout 0). По сути, это говорит: «Я согласен участвовать в этой передаче со всеми этими входами, пока это количество идет на этот один адрес».

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Как я пишу HTTP-сервисы спустя 13 лет работы с Go

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров22K

Примерно шесть лет назад я написал пост о том, как пишу HTTP-сервисы на Go, и сегодня я снова хочу рассказать, как пишу HTTP-сервисы.

Тот пост оказался довольно популярным и вызвал обсуждения, повлиявшие на то, как я делаю это сегодня. И спустя годы ведения подкаста Go Time, обсуждения Go в X/Twitter и поддержки подобного кода я решил, что настало время обновить информацию.

(Если вы педант и скажете, что Go не совсем 13 лет, то я отвечу, что начал писать HTTP-сервисы на Go версии .r59.)

В этом посте рассматривается широкий спектр тем, связанных с созданием сервисов на Go

Читать далее
Всего голосов 38: ↑38 и ↓0+38
Комментарии20

Клуб анонимных PHP'ешников

Время на прочтение1 мин
Количество просмотров29K
Здравствуйте. Меня зовут Вячеслав, мне 22 года и я пхп программист. Я сижу на пхп с 18 лет.
Читать дальше →
Всего голосов 497: ↑378 и ↓119+259
Комментарии197

Есть ли жизнь на Go после C#?

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

Всем привет! На связи Пётр, Go-разработчик в команде Ozon, которая занимается управлением товарами торговой площадки. Всё, что загружают продавцы, обрабатывается нашими сервисами. Девять месяцев назад я сменил основной язык программирования с C# на новый для меня Go. В статье будут впечатления от Go, расскажу о некоторых различиях между языками, а в конце поделюсь своим опытом поиска работы на новом языке. Ведь вопрос смены стека технологий рано или поздно встаёт перед каждым разработчиком.

Читать далее
Всего голосов 55: ↑45 и ↓10+35
Комментарии48

Средние highload паттерны на Go

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

Привет, Хабр! Меня зовут Агаджанян Давид и ранее я опубликовал статью «простые highload паттерны на Go», в которой были рассмотрены простые подходы увеличения пропускной способности отдельно взятого экземпляра приложения без хардкора. Мне импонируют простые подходы, так как over engineering подходы требуются в исключительных проектах, и то чаще всего только в отдельно взятых подсистемах, в остальном можно воспользоваться давно известными лучшими практиками.

Читать далее
Всего голосов 22: ↑19 и ↓3+16
Комментарии4

Простые highload паттерны на Go

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

Привет, Хабр! Меня зовут Агаджанян Давид, хочу поделиться некоторыми инженерами рекомендациями, которые часто на моем опыте помогали держать highload нагрузку не прибегая к хардкору. Примеры будут на Go. Эти подходы довольно хорошо известны, но как мне кажется они недооценены и многие этими подходами пренебрегают. Если вы впервые видите их, то рекомендую хотя бы попробовать реализовать в своих проектах и провести бенчмарки, возможно вы будете приятно удивлены..

Читать далее
Всего голосов 32: ↑28 и ↓4+24
Комментарии5

Госайтишники никак не могут запилить реестр повесток, а россияне начали платить налог 43% с дивидендов из США

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

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

Читать далее
Всего голосов 58: ↑46 и ↓12+34
Комментарии94

Создание минимального Docker-контейнера для Go-приложений

Время на прочтение4 мин
Количество просмотров46K
Привет, Хабр! Предлагаю вашему вниманию перевод статьи основателя сервиса Meetspaceapp Nick Gauthier «Building Minimal Docker Containers for Go Applications».

Время чтения: 6 минут

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

Часть 1: Наше «приложение»


Для тестирования нам потребуется какое-нибудь маленькое приложение. Давайте будем фетчить google.com и выводить размер HTML.

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
)

func main() {
    resp, err := http.Get("https://google.com")
    check(err)
    body, err := ioutil.ReadAll(resp.Body)
    check(err)
    fmt.Println(len(body))
}

func check(err error) {
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

Если мы запустимся, то получим только какое-то число. У меня вышло около 17К. Я целенаправленно решил использовать SSL, но причину объясню позднее.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии10

Как мы сделали свое Heroku-подобное облако

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

Возможно, у вас была (или есть) потребность развернуть свой IT-проект, будь то простой бот, сайт, приложение или сложный высоконагруженный сервис. И, возможно, вы пользовались для этого AWS, MS Azure или другими провайдерами публичных облаков. 

Тогда вы знаете, что для использования таких облачных решений нужно иметь весьма «глубокие карманы». Так, чтобы развернуть обычный сервис распознавания речи на 20 потоков вы заплатите Яндексу за виртуальные машины и за СУБД 43500 руб. в месяц (расчет на основе нашего ASR). И это еще достаточно простой, пусть и требовательный к CPU сервис.  Кажется, облачные услуги должны быть более доступны с финансовой точки зрения. 

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

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии6

Dokku: самый маленький PaaS

Время на прочтение1 мин
Количество просмотров33K
Dokku — это мини-Heroku, сделанный на базе Docker и состоящий из менее чем 100 строк на Bash.

После установки Вы сможете публиковать свои приложения простым git push. Каждое приложение будет запущено в изолированном контейнере. В конечном итоге у Вас будет своя Heroku-подобная платформа.
Читать дальше →
Всего голосов 40: ↑33 и ↓7+26
Комментарии6

С новым годом: GPT в 500 строках на SQL

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

В минувшем году все только и говорили об ИИ и о том, как он может всё за вас сделать.

Мне нравится, когда кто-то или что-то работает за меня. Поэтому решил: попрошу-ка ChatGPT написать за меня новогодний пост:

«Эй, ChatGPT. А ты можешь реализовать большую языковую модель на SQL?»
«Нет, SQL не подходит для реализации больших языковых моделей. Язык SQL предназначен для выполнения запросов к данным, хранящимся в РСУБД и для управления этими запросами. Для реализации большой языковой модели требуются сложные алгоритмы, обширные датасеты, а зачастую — и фреймворки для глубокого обучения. SQL всеми этими возможностями не обладает.»

Что ж, лишний раз убеждаешься, что, если хочешь что‑то сделать хорошо – сделай это сам.

Давайте же воодушевимся этим оптимистическим планом и реализуем большую языковую модель на языке SQL.

Читать далее
Всего голосов 215: ↑211 и ↓4+207
Комментарии21

Как я сделал ремастер всех серий Том и Джерри в 2к всего за пару месяцев

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров75K

Улучшение Том и Джерри из 480p в 1440p

С чего всё началось? Как-то я решил в третий раз с детства пересмотреть всю оригинальную коллекцию "Том и Джерри", но я, в отличие от маленького ребёнка, не потребляю любой контент вне зависимости от его качества. И вот я собрался посмотреть самую доступную версию, а там вот это цветошоу с постоянными царапинами на всём экране.

Мур-мур-мур
Всего голосов 397: ↑392 и ↓5+387
Комментарии193

2500 дней создания AI без использования нейронных сетей или покерный бот, который дороже $50к

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

Давно хотел написать статью про своё хобби, которое стало нечто большим для меня. 

Я закончил математический факультет(ТвГУ) в 2012г.  В период учёбы я профессионально играл в покер, как вживую, так и онлайн(yura_$198802,основной аккаунт PS). Не могу сказать, что был супер успешен, но для студента вполне себе подработка. Уже с 2011 года я начал карьеру программиста и продолжаю её по сей день. Это мой основной источник заработка. Но где-то в 2014 я серьёзно решил заняться написание покерного бота, для онлайн площадок. На данный момент “я” превратился в команду энтузиастов, которая двигает этот проект вперёд! Еще в университете довольно таки плотно был знаком с Байесовским классификатором, а также имел  базовые представления по нейронным сетям. Сейчас стало "мейнстримом" считать, что если вы нашли релевантные данные и корректно обучили сетку с использованием (ML,CatBoost,TensorFlow и т.д.), то вы сделали что-то похожее на “искусственный интеллект”(далее AI). Я решил ,что если раскрою верхнеуровневую архитектуру своего проекта, это может кого-то удивить тем, что AI - это нечто большое.(только не профессионалов в этой области) И даже в такой игре как покер, где казалась бы не обойтись без нейронных сетей(на самом деле это действительно так), до момента органического встраивания их в продукт, лично у меня прошло примерно 2500 дней. Сразу хочу отметить, что  способ, когда ты знаешь всю информацию обо всех участниках и играешь с одними и теми же, где можно просто собрать модель и обучить её по лучшим и быть в их числе, не подходит для так называемого реального онлайн покера. Тут  нужно делать изначально экспертную систему, которую уже можно бесконечно долго улучшать и модифицировать.

Читать далее
Всего голосов 21: ↑19 и ↓2+17
Комментарии15

Как спасти разбитую читалку, если у вас прямые руки

Время на прочтение9 мин
Количество просмотров15K
Статей о том, как подключить дисплей на электронных чернилах к Arduino, STM32, ESP32 и т.д. (нужное подчеркнуть) на этом ресурсе более чем достаточно, и я не стану утомлять читателя очередным погодным информером. Речь пойдет о том, как в хозяйстве можно использовать электронную книгу, ставшую жертвой комбинации четвертой фундаментальной силой природы – гравитации и седалищной мышцы Человека Разумного. Хе-хе. 

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

Для простоты рассмотрим, как устроен один чернильный «пиксель». В наиболее распространённом случае, это прозрачная сфера микронных размеров, наполненная неким подобием силиконового масла. В ней плавает некоторое количество частиц черного и белого цвета, имеющих разноименные заряды. И нет, это не электроны с протонами. Как правило частицы представляют собой полимер, обладающий электретными свойствами, то есть они способны долговременно удерживать электрический заряд со всеми вытекающими отсюда свойствами. То есть они будут соответственно себя вести в электрическом поле – заряженные частички будут испытывать силу притяжения или отталкивания от обкладок конденсатора с соответствующими зарядами. Ниже, я проиллюстрировал эту магию:

Всего голосов 74: ↑74 и ↓0+74
Комментарии21

Метод фрагментарного сжатия видеопотока

Время на прочтение11 мин
Количество просмотров15K
Я решил представить на суд уважаемого хабрасообщества свою разработку — метод фрагментарного сжатия видеопотока. Особенностью предлагаемого метода является полное соответствие сжатого видеопотока исходному, то есть метод осуществляет сжатие без потерь.
Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии24

Алгоритм быстрого нахождения похожих изображений

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

Введение


Недавно наткнулся на статью, размещенную на Хабрахабре, посвященную сравнению изображений «Выглядит похоже». Как работает перцептивный хэш. Так как я сам достаточно долго занимался этой тематикой (являюсь автором программы AntiDupl), то мне захотелось поделиться здесь своим опытом по данному вопросу. В статье я приведу два варианта алгоритма сравнения похожих изображений — базовый и улучшенный. Все они были проверены автором на практике в рамках указанного выше проекта. Изложение мое будет вестись без строгих доказательств, сложных формул и специальной математической терминологии. Надеюсь, что читатели простят меня за это.

Базовый Алгоритм


Мера схожести изображений


При сравнении похожих изображений первым встает вопрос: что считать мерой схожести изображений? Очевидно, что это величина имеет значение обратное различию изображений друг от друга. Следственно нужно выбрать некую метрику, характеризующую различие изображений друг от друга. Тогда схожими изображениями будут считаться изображения, отличие между которыми меньше некоторого порога. Для изображений с одинаковыми габаритами, обычно такой мерой различия служит среднеквадратическое отклонение пикселей одного изображения от другого. Хотя конечно, нам ни что не мешает выбрать другую метрику, например усредненную абсолютную разность пикселей изображений друг от друга.
Читать дальше →
Всего голосов 57: ↑55 и ↓2+53
Комментарии20

Почему ты не можешь просто начать меньше есть? (Не)очевидные факторы аппетита

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров32K

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

Читать далее
Всего голосов 37: ↑35 и ↓2+33
Комментарии48

50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков

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


Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
Читать дальше →
Всего голосов 80: ↑76 и ↓4+72
Комментарии270
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность