• Использование ClickHouse в VK, или Зачем мы написали KittenHouse
    +1
    Можно вопрос по kittenhouse/go?

    Разве блокировку на элемент надо ставить до снятия блокировки с контейнера? Код очень тяжело читается из-за этого — это оправдано?
    github.com/VKCOM/kittenhouse/blob/f07cfa44a8d67bbfb7015fca1e459f7731ab27c0/core/inmem/buffer.go#L48

    Как может появиться новый элемент вот тут? Читатели не блокирует друг друга, но писатель же блокирует читателей и эта ситуация невозможна или я заблуждаюсь?
    github.com/VKCOM/kittenhouse/blob/f07cfa44a8d67bbfb7015fca1e459f7731ab27c0/core/inmem/buffer.go#L75

    В целом. мне кажется проще и правильней было сделать так — писать напрямую в файл. При этом FS будет писать в буфер. В бэкграундтаске — раз в секунду или реже делать fsync — чтобы сбросить буфер на диск. А сейчас — вы по сути написали второй буфер — над файловой системой. Плюс я не смотрел код внимательно — но кажется синков -нет. Те вы пишете в буфер — потом в буфер файловой системы — во первых двойной буфер во вторых вы ничего не добились если не синкаете, разве нет? У меня очень похожая задача — массив файлов и запись в них — я решил ее напрямую и мне кажется так правильней: github.com/recoilme/pudge/blob/master/pudge.go
  • Хватит делать сайты с бесконечной прокруткойǃ
    0

    Эх, я был уверен что это я изобрёл — пагинацию по указателю(

  • Безопасность авиаперелётов
    0
    дада, буквально пару часов назад посчитал для себя что безопасней, и насколько:
    ru.tgr.am/@recoilme/167
  • Безопасность авиаперелётов
    +1
    ох я слепень — смотрел космический корабль)
  • Безопасность авиаперелётов
    0
    А почему говорят что на машине вероятность смерти выше, если по статистике ровно наоборот?

    Вот статистика: en.wikipedia.org/wiki/Aviation_safety
    Transport comparisons
    Смертей на биллион:
    Машина — 3 смерти на километр
    Самолет — 42 смерти на километр
    Те получается в Грузию из Москвы в более чем в 10 раз безопаснее поехать на машине?
  • Новости Typegram
    +1
    У него хороший отец(Luckycoin), знаменитый дед (litecoin) и богатый прадед(bitcoin) что технически означает наличие совместимого с bitcoin rpc сервера, например. Им по прежнему пользуются, например на реддит есть бот для пожертвований, www.reddit.com/r/sodogetip/wiki/index а за последние 24 часа отправлено doge на $16,648,335 USD. Doge обработал больше транзакций чем все криптовалюты вместе взятые, при этом размер блокчейна 30 Гигабайт, а среднее время транзакции — 1 минута. Он находится в топ10 криптовалют, но не это главное. Клиент Doge синхронизировался с блокчейном за пару минут, для примера, блокчейн «Виталика» свистел пердел и синхронизировался несколько дней забив весь винт и вечно висел. У Doge самый стабильный курс — 1Doge = 1Doge. Эта формула напоминает что Doge сделан для пожертвований и добрых дел, а не для обогащения. Разработка ведется, какие то смешные толстяки совершенно не умеющие в презентации — по прежнему пилят его. Но самое главное это его традиции и карма, например DogeRain! Все кто напишут комментарий в ответ с адресом кошелька — получат небольшое количество Доджей, просто для фана.
    image
  • Typegram — дзэн блог платформа
    0

    Продолжение приключений тайпграм в Интернет: https://m.habr.com/post/426099/

  • Новости Typegram
    0

    Попинайте пожалуйста мою идею с dogecoin… Я не до конца понимаю некоторые нюансы… Я могу создать кошелёк без пароля через rpc блокчэйн. Но тогда, любой кто знает его номер сможет вывести с него doge? Сколько ресурсов будет жрать клиент на синхронизацию блокчэйна примерно? Наверняка я что то упускаю, но json api стоит от 100 долларов /мес но может оно дешевле в итоге? Посоветуйте)

  • Typegram — дзэн блог платформа
    0
    А что это?
  • Typegram — дзэн блог платформа
    0
    спасибо!
  • Typegram — дзэн блог платформа
    0
    да, картинки пока не переехали на https и автообновление сертификатов не настроено
  • Typegram — дзэн блог платформа
    0
    много переосмыслено
    — разделение контента по языкам
    — подписки на каналы
    — главная страница как пульт управления порталом а не поляна для рекламодателей /лендинг
    — раздельный рейтинг
    — динамический топ статей с пенальти по времени
    — отсутствие внешних зависимостей
    — минимальное использование скриптов
    — оригинальный алгоритм сжатия картинок вместо ленивой загрузки
    — минималистичный интерфейс
    — отсутствие привязки к почте, возможность создания юзернейма из одной буквы, оригинальный алгоритм паджинации, чтение статей в хронологическом порядке, я могу продолжать бесконечно, но смысл? Все вебстраницы в чем то похожи друг на друга.
  • Typegram — дзэн блог платформа
    0
    довольно много идей украдено у медиум, телеграм и телеграф
    немношко украдено с хакерньюс, немношко с реддит
    Из дзена не нашлось что украсть. Не то чтобы проект плохой, даже вел там канал какое то время. Но мне не нравится в нем ничего, кроме самой идеи автоматических рекомендаций. Но даже она реализована крайне посредственно.
  • Typegram — дзэн блог платформа
    0
    если инстаграм люлей не наваляет — то останется как есть, если наедет — придется переименовываться
  • Typegram — дзэн блог платформа
    0
    будет
  • Typegram — дзэн блог платформа
    0
    мне очень нравится этот проект
  • Typegram — дзэн блог платформа
    0
    можете скриншот полноразмерный закинуть кудать?
  • GUI на Golang: GTK+ 3
    0
    да, забыл, сори, когда смотрел пару лет назад таблицы были тоже зародыше
  • Typegram — дзэн блог платформа
    0
    отсутствием fullhd монитора)
  • GUI на Golang: GTK+ 3
    0
    Ваш пример на этой либе:

    image

    package main
    
    import (
    	"github.com/andlabs/ui"
    )
    
    func main() {
    	err := ui.Main(func() {
    		input := ui.NewEntry()
    		button := ui.NewButton("Greet")
    		greeting := ui.NewLabel("")
    		box := ui.NewVerticalBox()
    		box.Append(ui.NewLabel("Enter your name:"), false)
    		box.Append(input, false)
    		box.Append(button, false)
    		box.Append(greeting, false)
    		window := ui.NewWindow("Hello", 200, 100, false)
    		window.SetMargined(true)
    		window.SetChild(box)
    		button.OnClicked(func(*ui.Button) {
    			greeting.SetText("Hello, " + input.Text() + "!")
    		})
    		window.OnClosing(func(*ui.Window) bool {
    			ui.Quit()
    			return true
    		})
    		window.Show()
    	})
    	if err != nil {
    		panic(err)
    	}
    }


    отсюда: getting started
  • GUI на Golang: GTK+ 3
    0
    libui не рассматривали?
  • Typegram — дзэн блог платформа
    0
    делал такую кнопку в админском интерфейсе для чата сапорта магазина как то давно, помогало от флуда типа девушка-девушка и тп, но тут и проект с открытым кодом и интерфейс единый.
  • Typegram — дзэн блог платформа
    0
    пока думаю над этим, тут много морально этических сторон — к примеру я забанил и удалил одного пользователя с постом типа «абрвалг — какого хрена тут нельзя постить тексты без текстов?» — так он до сих пор за мной по всем соцсетям бегает, минусует.
    Есть некоторые безумные идеи сложно реализуемые технически. Типа автор может иметь возможность удалить комментарий к своему посту, так как пост как бы его — но чтобы человек чей комментарий удален — не знал об этом. Или кнопка развидеть все от определенного человека, если достал. Пока в бэкграунде вызревают какие то идеи, и про карму и про модерацию — но еще не вызрели
  • Typegram — дзэн блог платформа
    +1
    поддерживает
  • Typegram — дзэн блог платформа
    0
    Из гоу я работал с mysql (напрямую, было очень много проблем, особенно на старте) и с boltdb (проблем на старте не было совсем, но они пришли с ростом базы), свой опыт поверхностно излагал в этом комментарии: habr.com/post/354224/#comment_10775784

    Потом написал свою бд и собственно проблемы закончились, обзор на хабре — habr.com/post/354224
  • Typegram — дзэн блог платформа
    +1
    Если честно писал то я бэкенд для мобильного приложения. Потом решил добавить админку и немного увлёкся
  • Typegram — дзэн блог платформа
    0
  • Typegram — дзэн блог платформа
  • Typegram — дзэн блог платформа
    0
    Велосипедов и правда много, а вот есть ли в нем фатальный недостаток — пока непонятно.
  • 2048 запрещено. Не РосКомНадзором
    0
    давно уже дело было. Приложение называлось ivk — жуткое поделие на стандартных компонентах андроид уже не помню даже что оно делало. Повалил траф — инсталов по 500 в день. Быстренько подменил на другое приложение, нормальное — клиент для вконтакте, который писал на конкурс. Дошел до 500к инсталов с ним, пока не забанили за возможность смотреть какое то дебильное кино в нем и не снесли его и весь мой акк с десятком приложений впридачу. Денег срубить не успел, нерасторопный( Не ну что то капало — на бургер в день, но недолго. Тут вобщем как повезет — можно и лулзы извлечь, а можно и нет. Успехов! И да — давно финансового стриптиза от тебя не было — как сейчас живется мобайл девелоперам?
  • 2048 запрещено. Не РосКомНадзором
    +3
    Ну и тема это не новая
    Ниже мои бодания с снапчатом, который теперь Снап, за мою приложеньку свапчат (удалил — потому что туда кроме половых органов ничего не постили)

    Скоро хочу релизить typegram — предвижу бодания с инстаграм, которой теперь лицокнига
    Достали эти упыри из всех щелей лезут буквы копирайтят
  • 2048 запрещено. Не РосКомНадзором
    +6
    работает — не трогай
    повалил траф — разберись почему.
    Алгоритмы гугла неисповедимы, траф может политься начиная с хорошего отзыва/ревью, и заканчивая иконкой/ключевым словом которые вдруг с кем то/с чем то сматчились
    Деньги полились из-за названия, а не из-за игры
    Итого: зря переименовал, неудачник!
  • Centrifugo v2 — будущее сервера real-time сообщений и библиотека для Go
    –2
    Респект! Но возможности:
    прочитать сообщения из хистори — начиная от заданного — нет
    персистить сообщения — в свою бд — нет
    апи — не продумано — ибо нет реальной необходимости со стороны пользователей
    А я тогда кто? В чем вообще цель поста если вы на фидбек так реагируете? Похвастаться пришли? Ну молодец!
  • Centrifugo v2 — будущее сервера real-time сообщений и библиотека для Go
    0
    Чтобы другие могли написать другой Engine — обычно дают интерфейс, а не ждут чего то
    Вот, смотрите пример как это делается: github.com/ipfs/go-datastore
    Или в эфириум движке пример. У вас очень странный подход к разработке, я уже понял
  • Centrifugo v2 — будущее сервера real-time сообщений и библиотека для Go
    0
    Если склонировать репозиторий то все internal зависимости, не прописанные в toml — не подтянутся, если я правильно понимаю dep. Но я не фанат dep, могу неправильно им пользоваться. Хорошей идеей как мне кажется было бы просто пройти этот путь и описать, как собирать, какой бренч девовский, какой рабочий c2/master/c2-published и тп Ну я думаю как до релиза доберетесь — рассосется. Только после релиза обычно уже поздно — и новый релиз, а процесс описывать лень и так по кругу)
  • Centrifugo v2 — будущее сервера real-time сообщений и библиотека для Go
    –1
    Смотрю код, отличная работа!
    Но если Вы хотите получить грант от Мозилы — надо научиться работать с комьюнити. Нельзя просто выкладывать код и ждать когда его начнут развивать
    Люди — ленивы. Если вы юзаете dep -надо написать что вы его юзаете где его качать и как собирать. Если уж заюзали его — в toml файлы надо прописывать все зависимости, включая интернал с нужными путями. Либо выделять либы в отдельные репы. Если это либа и она не юзает прометеус какой ть — не надо заставлять его качать. Если вы в бренче работаете — надо написать в каком. Если вы хотите чтобы вам слали PR — встаньте на место того, кто захочет его слать. Клонируйте сами свою репу и попробуйте послать себе PR. Поймете что сделано не так. Не обижайтесь на критику я добра вам желаю и развития. Но пока это выглядит как пет проект не до конца доделанный (я про версию 2) Кругом путаница
    Просто посмотрите на другие популярные проекты, полно шаблонов и рекомендаций как организовать репозиторий и как все надо описывать. Пока, к сожалению — удобней спулить ваш код, разобраться и собрать под себя нужное — не вернув вам PR
    Удачи!
  • Centrifugo v2 — будущее сервера real-time сообщений и библиотека для Go
    0
    Я пони. Тем не менее сделать это кмк просто. Конечно речь не идет о том, чтобы хранить всю историю. Но так как она уже хранится за некий период возмоность ее чтения ничем не навредит. Тем более как Вы справедливо заметили в том же редисе сообщения персистятся.
    Пожелание: было бы здорово выделить библиотеку в отдельный репозиторий и навести порядок. Какая то полная каша с зависимостями, именованиями и бренчами центрифуг( Просто непонятно какие бренчи каких проектов клонировать в каой последовательности github.com/centrifugal/centrifuge/issues/8
  • Centrifugo v2 — будущее сервера real-time сообщений и библиотека для Go
    0
    Я завел ишью на github с конструктивным описанием функционала, думаю там удобнее будет обсудить целесообразность и возможность реализации метода для чтения истории непрочитанных сообщений: github.com/centrifugal/centrifugo/issues/228

    Просто по факту — вы говорите что я могу реализовать это сбоку, но в данный момент это невозможно. Я могу это реализовать только параллельно центрифуге. Без возможности синхронизации с ней( А хотелось бы просто уметь читать историю сообщений из кеша центрифуги.
  • Centrifugo v2 — будущее сервера real-time сообщений и библиотека для Go
    0
    а почему вы не дали никаких методов в апи для построения на базе центрифуги чего то большего чем рилтайм транспорт доставки? Это принципиальная позиция или просто не было подобных запросов?

    Вот смотрите, внутри центрифуги есть последний прочитанный уид в разрезе канал/клиент, как я понимаю
    — но вы не дали метода его считать
    — вы его не персистите для разрывов пока клиент зашел в метро как я понял, например
    — вы не дали ни метода считать историю начиная с непрочитанного сообщения, по партициям/страницам, ни количества непрочитанных сообщений
    Весь это функционал как бы есть (для кратковременных дисконектов, кстати насколько кратковременных? Секунда, сутки, это как то параметризируется?), но в апи — скрыт
    Почему так? Это просто как то очень странно. Может быть я могу как то помочь реализовать это или описать тз или еще как то. Или вам это неинтересно?
  • Centrifugo v2 — будущее сервера real-time сообщений и библиотека для Go
    0
    Не смог понять функционал по описанию(
    Допустим есть канал, правильно ли я понял:
    — если емкость канала равна 50 сообщениям, в канале будут храниться 50 последних сообщений, упорядоченных по времени
    — хранится ли где ть uid последнего прочитанного сообщения подписчиком, можно ли его получить и есть ли возможность считать unread count
    — Как помечать сообщения как прочитанные на клиенте, есть ли какой то апи метод для этого
    — Хранится ли эта инфа на сервере или отдается на откуп клиенту/бекенду
    По описанию, понятно что есть вебсокеты для рилтайм режима и события/уведомления о подключении/отключении и новом сообщении. Но совершенно не понял что происходит между сессиями и какие возможности дает библиотека. Простите если глупые вопросы.