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


Ответить в тред Ответить в тред

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
70 16 22

React/Redux экспериментальный тест оболочки двачя 27/01/19 Вск 00:32:51 13356021
icon@192x192.png (8Кб, 192x192)
192x192
Садился в прошлом году пилить кастомный GUI для двачя.
Потом понял, что имиджборды — всё, но код довёл до минимальной альфа-0.0.1 версии, раз что-то уже было.
https://catamphetamine.github.io/chanchan/
https://github.com/catamphetamine/chanchan
В принципе, ничё так получилось, но по фичам это, конечно, процентов пять от функционала двача, и я уже не буду там ничего делать (максимум разве что для себя докручу браузилку тредов с фильтром по щитпостингу), постинга там нет и не планируется.
Просто кидаю сюда, вдруг какой-то мазохист захочет покопаться в легаси коде, но это вряд ли.
27/01/19 Вск 00:35:49 13356072
Последний из могикан, кстати, тоже не так давно таки сдался.
https://github.com/DiscoursProject/Discours

> Goodnight, sweet prince
> К 2019 году борды умерли. Активное население ушло, остались нытики и пустословы. На этом прощайте. Счастливого Нового года!
Аноним 27/01/19 Вск 01:23:52 13356293
Спасибо Абу!
Аноним 27/01/19 Вск 02:58:18 13356624
Screen Shot 201[...].png (24Кб, 820x212)
820x212
o_0
ТЫ ЧУМАЧЕЧИЙ
Аноним 27/01/19 Вск 03:03:40 13356645
>>1335607
И куда, интересно, ушло?
Аноним 27/01/19 Вск 03:20:18 13356666
>>1335662
>1 пук в ридми в день
27/01/19 Вск 03:27:24 13356697
>>1335666
>>1335662

На самом деле моя молодость вбухана в веб, который теперь уже всё.
Изучайте лучше сиплюсы и в геймдев валите.
Я сам в геймдев буду сваливать.
В вебе уже нечего валить.
Мобильные приложения тоже уже всё.
27/01/19 Вск 03:36:50 13356728
>>1335669
Ладно, это крик души просто был, не обращайте внимания.
Везде деньги есть.
Просто столько надежд было в своё время, и как-то всё сдулось.
Хочу драйва, чтобы как в 90-ые, хачили в гаражах.
Веб теперь полон хипстеров и девушек, любого студента можно за пару месяцев обучить.
Ценность веб-мастера девальвировалась.
Аноним 27/01/19 Вск 03:39:46 13356739
>>1335672
Лол, я уже скринить хотел
мимо-перекатился-из-мобильного-геймдева-в-веб
Аноним 27/01/19 Вск 04:12:08 133567510
>>1335672
>>1335669
на самом деле, если ты гуру оптимизации, шаришь в матане и всяческом clever stuffе типа hyperloglog++ и тп. то можешь в гейдев не валить
29/01/19 Втр 06:12:11 133718811
>>1335675
> на самом деле, если ты гуру оптимизации, шаришь в матане и всяческом clever stuffе типа hyperloglog++ и тп. то можешь в гейдев не валить

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

------------------------------------------

Кстати, небольшой соц.опрос.
На мой взгляд, не удобно каждый раз наводить мышью, чтобы смотреть, на что там Семён ответил Антону.
Сделал на коленке автоматическое разворачивание отвечаемых постов (что-то типа "разворачивать картинки", только для постов).
На мой взгляд, интересно получилось — удобнее.
https://catamphetamine.github.io/chanchan/v/3749775
Это я так, просто, фигнёй страдал.
29/01/19 Втр 06:17:05 133718912
image.png (176Кб, 1577x1619)
1577x1619
>>1335675
> на самом деле, если ты гуру оптимизации, шаришь в матане и всяческом clever stuffе типа hyperloglog++ и тп. то можешь в гейдев не валить

Куда мне там.
Я и универ не закончил.
Вот, в 30 лет формочки леплю.
Как совочком в песочнице, ага.
Зенит славы, ничего не скажешь...
Главным драйвером было, конечно, написать свою соц.сеть и разбогатеть, как Пашка, но в реальности только осознал, что тупик развития в данной области достигается очень быстро, а также есть неиллюзорные шансы упразднения данной среды в целом.
04/02/19 Пнд 03:23:55 134133013
04/02/19 Пнд 03:27:15 134133114
Кстати, могу заметить, что по сравнению с форчонгом двач — это жесть и содомия.
Форчонг очень простой по своей структуре.
Синтаксис постов: либо просто текст, либо цитата, либо ссылка на пост.
И картинка может быть только одна.
И API очень чистый и логичный.
У двачей в API видно всё наследие его разработки, "с древнейших времён и до наших дней".
Если кому-то понадобится, я для себя расшифровывал поля:
https://github.com/catamphetamine/chanchan/blob/master/docs/2ch.hk/API.md
И синтаксис постов у двачей тоже полный Содом: верхние индексы, нижние индексы, цвета, заливки, и чего только нет.
04/02/19 Пнд 03:29:34 134133315
Как следствие простоты синтаксиса: посты форчонга могут быть выведены на мобильных как системный текст, а для двача во всех этих мобильных клиентах наверняка под каждый пост городят отдельный Web View (или типа того).
Как следствие: один может работать и скроллиться в бесконечность на 60 фпс, а другой ест процессор (и батарейку), и грузится дольше.
Это так, просто предположения.
В общем, старое-доброе правило: отсеки всё лишнее и "чем проще — тем лучше".
13/02/19 Срд 21:01:05 134709816
image.png (1961Кб, 3840x2160)
3840x2160
Умодняем интерфейс.
Аноним 13/02/19 Срд 21:07:37 134710317
>>1347098
Ты лучше оптимизацию запили, медленно все пиздец как.
14/02/19 Чтв 06:06:44 134725218
image.png (1064Кб, 3840x2160)
3840x2160
image.png (1158Кб, 3840x2160)
3840x2160
>>1347103
> Ты лучше оптимизацию запили, медленно все пиздец как.
Так это бесплатный публичный прокси, на котором задержка под две секунды.
Надо будет в ридми добавить капсом, что ВСЁ МЕДЛЕННО, потому что есть такая вещь как CORS, с которым не получится просто так взять и подтянуть сторонний JSON в браузер.
Как по мне — глупость.
Те же мобилки — тянут и в ус не дуют.

Из новостей: я-таки решил, что допилю до нормального состояния всё это дело, раз уж начал.
Потом буду форсить её Нариману и Хироюки во все щели.
14/02/19 Чтв 11:15:43 134736819
image.png (139Кб, 3641x587)
3641x587
>>1347103
> Ты лучше оптимизацию запили, медленно все пиздец как.
А вообще-то, Анон, хороший совет был.
Поднял CORS прокси на nginx на Амазоне, время ожидания ответа от сервера снизилось.
Полный сетевой цикл теперь — пол секунды вместо полутора секунд.
Ещё оказалось, что с форчаном такой прокси не робит, так как CloudFlare у форчана анально огорожена от подсети AWS EC2, что по сути правильно: ничего не стоит запустить ботнет из 100500 инстансов и дудосить во все поля.
А двач, вот, не блочит AWS.
Возможно, при переезде на мейл.ру КлаудФлеру заменили местным CDN-ом, который более адекватен.
14/02/19 Чтв 11:16:31 134736920
>>1347103
> Ты лучше оптимизацию запили, медленно все пиздец как.
Второй факт: оказалось, что я грузил описания видео с YouTube в один проход (скилл), когда такое лучше подгружать "асинхронно" уже после выдачи страницы.
Небольшой совсем выигрыш в скорости, но идеологически более верно.
14/02/19 Чтв 11:32:52 134738221
>>1347103
> Ты лучше оптимизацию запили, медленно все пиздец как.
А вообще, при более пристальном рассмотрении оказалось, что тормозит не сеть, а ЦПУ (молотит в загрузке на 100%), так что всё-таки действительно тормозит, пойду дебажить.
Аноним 14/02/19 Чтв 16:30:09 134753222
>>1335602 (OP)
Оче тормозит, треды не открываются. 1/10. Алсо, >>1335662 - что там можно было год делать, это же пиздец какой-то.

>>1335607
404
Если это тот дискурс, про который я думаю, то это не борды умерли, это просто дискурс был говном с админом-аутистом.
Аноним 14/02/19 Чтв 16:32:39 134753423
>>1341333
>под каждый пост городят отдельный Web View
Ты ебнутый на самом деле просто дилетант.
24/02/19 Вск 23:31:25 135445724
icon.png (9Кб, 192x192)
192x192
>>1347532
> Оче тормозит, треды не открываются. 1/10.
Ну да, есть такое...
Открыли мне глаза, там много ещё пилить.
Много оптимизировать.
А с проксированием вообще затея оказалась недальновидной: по сути получается, что сначала запрос идёт из браузера на прокси через Атлантический океан, далее с этого прокси обратно на двач через Атлантический океан, потом обратно на прокси через Атлантический океан, и потом уже с прокси обратно в браузер через Атлантический океан.
В общем, весело придумал, да...
Я тут ещё глянул время загрузки двача.
Как-то не очевидно было — он же молниеносно грузится.
У меня, в ближайшей Области, грузится за 15 миллисекунд: что API, что страница сайта.
В общем, молниеносно, прямо как логотип.

> Алсо, что там можно было год делать, это же пиздец какой-то.
Да она походу рабочее время считает, сейчас же все в житхаб коммитят, там и код ревью проводить удобно.
Я в скольких последних конторах работал — везде житхаб используют.
Берёшь себе задачу из Issues, открываешь Pull Request, и тимлид каждый день смотрит, сколько ты наработал или снова член пинал и двачи весь день читал.
Сейчас они ещё что-то там запилили, что карточки можно двигать (ЭДЖАЙЛ), автоматически тесты запускать по коммиту, и прочее.

>>1347534
> на самом деле просто дилетант.
Дилетант на самом деле ты.
Значит, рассказываю, как делают в мире взрослых людей: если ты такой умный, то берёшь и пишешь, как бы ты реализовал то-то и то-то.
Объясняешь подробно, что такое TextView в Андроиде, NSAttributedString в iOS, или что там у вас в этих ваших мобилках.
Кидаешь ссылки на документацию, и т.п.
Либо идёшь в /b/ и там перекидываешься калом со сверстниками.
24/02/19 Вск 23:55:50 135448125
Буду-ка, наверное, изредка пилить посты сюда про то, что интересного узнал для себя, поскольку тематика раздела — не "я пиарюсь".

Сегодняшняя тема: парсинг видео с Ютуба.
Берётся ссылка, из неё вынимается ID.
Далее регаетесь в Google Developer Console, в разделе YouTube API v3, и там выдают "ключ".
На ключ у Ютуба есть квоты: максимум миллион "очков" в сутки.
Очки считаются по типу операций.
Для получения данных по видео используются типы операций ("parts"): "contentDetails" (2 очка, продолжительность видео, соотношение сторон) и "snippet" (2 очка, название и описание).
Описание и демо:
https://developers.google.com/youtube/v3/docs/videos/list
Таким образом, в день с одного ключа можно получить 250 000 видео.
Как обходится — хз, не нагуглилось.
Я думаю, в Гугле не дураки сидят и засекают HTTP заголовок Origin, в котором стоит сайт, отправивший запрос, так что просто завести кучу ключей — не факт, что дадут. А может и дадут.
Для защиты ключа от кражи можно делать ограничение по адресу сайта, отправляющего запрос.
Многие ещё могли заметить, что если зайти на ютуб с английской операционной системы, то у некоторых русских роликов будет иностранное название: это потому что в ютубе можно переводить ролики на произвольное количество языков.
Однако API всё это дело не возвращает, а выдаёт только по одному, для каждого конкретного языка, и стоит это дополнительные 2 очка, так что я это не использую.
Запросы выполняются быстро: из ближайшей Области — около 70 миллисекунд.
24/02/19 Вск 23:59:08 135448426
Можно ещё парсить твиты.
API: https://publish.twitter.com/oembed?url=https://twitter.com/Interior/status/{id}
Где "{id}" заменяется на ID твита.
Возвращает объект вида: { url, html, author_name, author_url }.
HTML можно парсить в обычный текст, убирая теги.
Есть нормальное API, но оно не работает в обозревателе, так как выдаётся не ключ API, а ключ получения ключей API (которые истекают со временем — протокол oAuth).
Эта схема работала бы, но Твитор не хочет разрешать CORS на своих адресах получения ключей по ключу получения ключа.
Много тредов в интернете, но Твитору без разницы.
Но вот этот "oembed" — работает, и CORS не выдаёт ошибку.
Поэтому использую его.
Аноним 25/02/19 Пнд 00:30:36 135451827
>>1354481

Это через oembed бесплатно и без ограничений нельзя разве делать?
Аноним 25/02/19 Пнд 15:44:16 135484428
preview480p.mp4.jpg (56Кб, 856x482)
856x482
>>1335602 (OP)
Грузится как 4К торрент, треды не открываются, разметка везде поломана. Хуй знает, чем ты там год занимался, имея апи, я за неделю спарсил все сайты стройматериалов россии в свое время. А это, дружочек, не лямода, там агрегаторов нету :)

Ставлю тебя писю в ротик/10, глотай.
Аноним 25/02/19 Пнд 15:50:28 135485029
>>1335602 (OP)
пиздец, ошибки вылетают, грузится долго. шрифт большой.
какой-то кружок на весь экран при скролле. очень слабенько.
Аноним 25/02/19 Пнд 17:26:25 135491730
Ебать, у меня постоянно бублик крутится при загрузке треда, мой виндовый. Это че такое, посоны? Первый раз такое вижу.
26/02/19 Втр 00:58:42 135535831
>>1354518
> Это через oembed бесплатно и без ограничений нельзя разве делать?
oembed у Ютуба не всегда работает.
На StackOverflow есть много сообщений, где челы пишут: "НЕ ИСПОЛЬЗУЙТЕ, ЮТУБ ЗАБИЛ НА ЭТОТ API, НЕ ВСЕ ВИДЕО ГРУЗЯТСЯ, ИСПОЛЬЗУЙТЕ YOUTUBE DATA API".
26/02/19 Втр 00:59:48 135536032
>>1354844
> Грузится как 4К торрент, треды не открываются, разметка везде поломана. Хуй знает, чем ты там год занимался, имея апи, я за неделю спарсил все сайты стройматериалов россии в свое время. А это, дружочек, не лямода, там агрегаторов нету.
Лол, как же у него пригорело.
Беги туши пожар.
26/02/19 Втр 01:00:05 135536133
>>1354850
> пиздец, ошибки вылетают, грузится долго. шрифт большой.
какой-то кружок на весь экран при скролле. очень слабенько.
Ещё один не шарящий.
26/02/19 Втр 01:00:27 135536234
>>1354917
> Ебать, у меня постоянно бублик крутится при загрузке треда, мой виндовый. Это че такое, посоны? Первый раз такое вижу.
Это один и тот же пишет, походу.
26/02/19 Втр 01:30:32 135537435
>>1354518
> Это через oembed бесплатно и без ограничений нельзя разве делать?
А вообще, погуглил сейчас эти темы на StackOverflow и не нагуглились.
В целом, да, можно было бы использовать его (вроде бы как он в целом работает).
Официальной документации просто нет по нему никакой от Ютуба, что тоже навело меня на мысли о его неподдержке.
А так, у Твиттера есть поддержка JSONP (это я не правильно написал, что он поддерживает CORS: на самом деле не поддерживает), а у Ютуба такой поддержки нету, поэтому из обозревателя его oembed в любом случае не прочесть. Только если через прокси какой-то. В принципе, тоже вариант, для какого-нибудь продакшена.
Сам Двач использует YouTube Data API (можно посмотреть в консоли). При его гигантской посещаемости — хз, как хватает ключа.
500 тысяч видео в день.
Судя по официальным данным, у Двача миллион просмотров в сутки:
https://2ch.hk/price.html
В принципе, не каждый тред содержит Ютубовое видео, но при этом некоторые треды содержат их много (/v/, /vg/), так что хз.
26/02/19 Втр 02:27:49 135538636
>>1354518
> Это через oembed бесплатно и без ограничений нельзя разве делать?
Резюмируя по YouTube oEmbed: судя по всему, он-таки работает, и можно его использовать (но без JSONP или CORS — на мобильных и на серверах).
Единственное, он не всегда, видимо, возвращает правильную картинку.
Пример:
https://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=INVdbXTuPVI
Выдаёт "thumbnail_url": "https://i.ytimg.com/vi/INVdbXTuPVI/hqdefault.jpg"
Если открыть её, то это будет картинка 4:3.
На самом деле, есть картинка гораздо больше, и 16:9:
https://i.ytimg.com/vi/INVdbXTuPVI/maxresdefault.jpg
Но oEmbed её не указал.
Так что, видимо, oEmbed подходит для названия видео, а также для соотношения сторон, и всё.
26/02/19 Втр 02:28:27 135538737
26/02/19 Втр 02:28:55 135538838
Аноним 26/02/19 Втр 04:00:31 135539939
image.png (685Кб, 900x900)
900x900
>>1347252
Мое увожение, анон.
Я вообще оче скептически отношусь к веб-макакам и очень редко вижу хороший UI, но твоя поделка прям понравилась.
02/03/19 Суб 01:59:45 135751440
image.png (1773Кб, 2561x1019)
2561x1019
>>1355399
> Мое увожение, анон.
ммм, положительный комментарий, дела...
ну спасибо)

По традиции, чего нового для себя прочитал.

1. SSL сертификаты.
Для поднятия своего прокси копипастинга по кускам из интернета конфига nginx оказалось недостаточно — https-сайт не может запрашивать не https-адреса.
Оказалось, что сегодня получить сертификат бесплатно без СМС и регистрации может любой — достаточно поставить на машину утилиту `certbot`.
Вот хорошая статья для Debian (я ставил на AWS Linux, который основан на Red Hat, в котором немного по-другому):
https://habr.com/ru/post/318952/
Сертификат выдаётся на три месяца, и по этой причине требуется добавлять в cron ежедневную задачу на его обновление.
Обновление возможно только около срока истечения, поэтому задача ежедневная.

2. CSS Grid.
Если раньше я видел статьи про CSS Grid, то пролистывал их, так как они ещё только начинались.
Похоже, что время уже почти пришло: из актуальных обозревателей только IE не будет их поддерживать.
IE — всё ещё держит около 3% аудитории, поэтому на работе скорее всего не следует применять CSS сетку.
Но для своих "pet project"-ов — вполне стоит, для набивания руки.
По сути, они позволяют делать всё, что можно сделать тегом <table/>: например, плитку в стиле Microsoft Metro.
Но если <table/> зафиксирована в разметке через colspan и rowspan, то CSS Grid можно делать динамической просто через CSS (`style`).
Так что можно рисовать плитки разных размеров в цикле, и они сами будут распределяться по клеткам.

3. HTML парсер.
Изначально, в качестве эксперимента, набросал свой "быстрый" вариант HTML-парсера, который по итогу перерос в большой "хак" по мере разрастания, да и производительность вполне могла проседать.
Оказывается, в каждом обозревателе есть встроенный DOMParser, которым я и воспользовался.

4. React.
Оказывается, React действительно очень медленный в плане рендеринга: как на сервере, так и на клиенте.
Рендеринг всех тредов /vg/ занимает 4 секунды.
Всех тредов /b/ — полторы секунды.
Так что буду вводить постраничность.
С постраничностью возникает другой вопрос: как показывать общий прогресс, потому что скроллбар уже не выступает мерилом.
Есть различные решения.
Например, полоска вверху (можно посмотреть на сайте Варламова).
На мой взгляд, выглядит противоестественно — пользоватль листает вниз, а растёт она вправо.
Можно было бы сделать такую же полоску, но сверху вниз.
Идея ещё получше: справа внизу делать fixed элемент, в котором писать, сколько из скольки загружено.
Аноним 02/03/19 Суб 06:04:25 135756441
>>1357514
>сегодня получить сертификат бесплатно без СМС и регистрации может любой
Это Wildcard certificate

>делать всё, что можно сделать тегом <table/>: например, плитку в стиле Microsoft Metro.
Не понимаю, есть ли у него качественные преимущества перед Bootstrap, ибо почти та же сетка.

>набросал свой "быстрый" вариант HTML-парсера
Есть возможность с помощью HTML распарсить контент с собственного хостинга страницы? Так чтобы контент (текст) добавлять типовыми файлами, которые будут подхватываться и отображаться внутри элементов страницы? Вроде того как видео добавляется плейлистами.

02/03/19 Суб 22:42:03 135798442
>>1357564
> Это Wildcard certificate
Не понятно, что вы имели ввиду под этим.
"wildcard certificate" — это сертификат вида *.example.com, то есть подходящий под все поддомены.
LetsEncrypt выдаёт как wildcard сертификаты, так и обычные.
Вы считаете, что есть какая-то уязвимость?

> Не понимаю, есть ли у него качественные преимущества перед Bootstrap, ибо почти та же сетка.
Да вы чего, CSS Grid гораздо гибче.
Вы не сделаете плитку в стиле Метро на сетке бутстрепа.
Вы не сделаете чересполосицу на сетке бутстрепа (colspan).

> Есть возможность с помощью HTML распарсить контент с собственного хостинга страницы?
Вы имеете ввиду, на сайте парсить самого себя?
Ну, конечно есть, что такого: CORS позволяет, можно считывать любые файлы со своего домена, и дальше уже их парсить.
02/03/19 Суб 22:45:36 135798643
image.png (1015Кб, 2852x1943)
2852x1943
Сегодня переписал систему игнорируемых слов.
Изначально сделал её по аналогии с основным сайтом, когда составляется список "стоп-слов", и далее сообщение скрывается.
Как выяснилось, это очень неудобный рабочий процесс: часто сообщения могут быть очень длинными (например, ОП-посты, или истории, "пасты"), и в них чисто по теории вероятности вполне может проскочить одно или два "стоп-слова".
Новая реализация не скрывает сообщения, а помещает "стоп-слова" под красные спойлеры.
С таким фильтром можно даже сквозь пальцы листать /po/.

02/03/19 Суб 22:51:25 135798944
>>1357564
> Не понимаю, есть ли у него качественные преимущества перед Bootstrap, ибо почти та же сетка.

Я понял, что вы имели ввиду: сетка бутстрепа делит страницу на 12 столбцов, и в рамках этих 12 столбцов можно делать плитку Метро и colspan, да.
Но такая схема не подойдёт для "резиновой" вёрстки.
Бутстреповые столбцы очень ограничены: они лучше, чем desktop-only дизайн, но в целом не идеально-резиновая технология.
По-настоящему резиновая вёрстка использовала бы CSS Grid.
По сути, это будет как бутстреп, только с шириной колонок, рассчитываемой во время рендеринга, а не заданной при компиляции.
Я использовал сетку в меню досок слева: если посмотреть, то можно увидеть, что левый столбец имеет в точности ширину наиболее длинного URL-а доски, а второй столбец — уже оставшаяся ширина.
Без CSS Grid я это делал таблицей, но это не модно.
Кстати, эффекты :hover и :active пришлось сделать скриптом, т.к. по-другому их реализовать в такой конфигурации не представляется возможным.
Аноним 03/03/19 Вск 02:03:37 135806145
>>1357984
>Вы считаете, что есть какая-то уязвимость?
Я не разбираюсь, но определенно его советуют не для бзопасности использовать, а лишь чтобы в поисковике по ранжированию не просесть и чтобы провайдер не знал куда ходишь.

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

>Вы не сделаете чересполосицу на сетке бутстрепа (colspan).
Нечто схоже могу блоками, но это же табличная фича, грид это фреймворк для таблиц? Они становятся адаптивны?

>CORS позволяет
Проблема в том что я не администратор хоста.
Пользуюсь бесплатным хостингом для статики.
Ищу возможно реализовать удобное хранение контента.
С картинками проблем не имею, а вот текст в блок подгрузить не знаю как, собрался для этого учить JS.


Аноним 03/03/19 Вск 02:10:19 135806546
>>1357989
>"резиновой" вёрстки
Не вижу причин на сегодняшний день растягивать дизайн.
Резина у меня и на ванильном хтмл получалась через вьюпорты.
03/03/19 Вск 05:26:48 135808547
>>1358061
> Не вижу причин, которые могут мне помешать.
Ну, по сути можете и на бутстрепе, да.
Просто CSS Grid заменит все эти бутстрепы в будущем, так что можно постепенно перекатываться.
На собеседованиях пригодится, как минимум.

> Проблема в том что я не администратор хоста.
Пользуюсь бесплатным хостингом для статики.
Ищу возможно реализовать удобное хранение контента.
С картинками проблем не имею, а вот текст в блок подгрузить не знаю как, собрался для этого учить JS.

Ну попробуйте подтянуть через `fetch('https://...file.html').then(response => console.log(response))` в теге <script> на этом хостинге.
Если в консоли будет ошибка — значит, CORS не пропустит.
Если не будет — значит, можно парсить.
Аноним 03/03/19 Вск 05:44:41 135808748
>>1357514
Привет, слушай как вкатиться в парсинг? Хочу например что-то простое для начала спарсить, как начинал?
13/03/19 Срд 15:44:26 136347449
Две недели пилил сокращалку постов.
Вот это да...
Не ожидал, что будет такой запар.
Возможно, я усложнил это дело.
В общем, сначала строится древо частей поста, затем программа идёт построчно и смотрит, на какой строке переполняется максимальная длина поста.
Смотрит длину этой последней строки: если она меньше 30% всего предыдущего текста, то убирает её, и всё, что после неё, "под кат".
Если строка достаточно большая в масштабах всего предыдущего текста поста, то анализирует эту строку по частям: ищет концы предложений (". ", "? ", "! "), и пробует разбивать по этим точкам. Есть ещё неграмотные товарищи, которые в принципе не пользуются грамматикой, и для подобных случаев она просто отщипляет по максимальной длине поста и ставит троеточие.
На словах звучит просто, но для меня такая алгоритмика уже не изи-мод.
Всех программистов можно условно поделить на алгоритмистов и интерфейсников.
Вот я скорее ко вторым, и с детства всю эту алгоритмику не понимал.

>>1358087
> Привет, слушай как вкатиться в парсинг? Хочу например что-то простое для начала спарсить, как начинал?
Ммм, ну, вкатываться-то там особо некуда.
Я хз, берётся текст, парсится в "абстрактное синтаксическое древо" (AST), и дальше уже из этого древа берётся нужная информация.
Например, там, парсится какой-нибудь сайт (как в старые-добрые): скачивается страница, дальше парсером парсится как XML, а дальше уже используя "XPath" (древняя технология, но работает) информация оттуда берётся в программу.
Если говорить про Node.js, то скачивание файла делается на 10 строк с помощью `http.request(url, callback)`, парсинг XML в древо — можно делать с помощью библиотеки "xmldom", а дальше уже поиск по этому древу — с помощью библиотеки "xpath".

import xpath from 'xpath'
import XMLDOM from 'xmldom'

const document = new XMLDOM.DOMParser().parseFromString(content)
const result = xpath('//path/to/data', document)

Вот что-то по XPath, если надо:
https://habr.com/ru/post/114772/

Мне лично удобнее DOM, чем XPath, потому что XPath достаточно сложен для человека с не алгоритмическим складом, а DOM — гораздо проще, и все его уже знают.
Для получения DOM-а в Node.js можно использовать библиотеку "jsdom", и там уже дальше по привычной схеме вида "document.querySelectorAll('a[href]').map(_ => _.getAttribute('href'))"
https://github.com/jsdom/jsdom

Также уйма статей есть в интернетах наверняка.
Типа таких: (переводы)
https://frontender.info/web-scraping-with-nodejs/
Там они используют тоже DOM, но в ещё более упрощённом виде (jQuery-подобный синтаксис).

В общем, если интересно научиться парсить что-то, то можно начать с Node.js и парсинга HTML страниц с помощью DOM.
Дальше можно попробовать XPath (потому что это более "серьёзный" способ).
13/03/19 Срд 15:55:53 136348450
>>1358087
А вообще, я там выше написал когда про "xmldom" в связке с "xpath": я так смотрю, этот "xmldom" уже два года не обновлялся, так что лучше сразу смотреть на "jsdom".
Так бывает: нагуглится что-нибудь, и вроде бы всё по статье, а на библиотеку уже забили, и статья уже года три как написана, и уже давно все используют что-то другое.
Так что в динамичном мире яваскрипта нужно смотреть на дату статьи/ответа, и на последний релиз библиотеки.
Вот статья какая-то:
https://habr.com/ru/post/301426/
С неё и начать советую.
Там тоже используют этот "cheerio", у которого 20 тысяч звёзд на житхабе, и релиз был в конце января, так что проект живой и популярный:
https://github.com/cheeriojs/cheerio
Построен на основе какого-то парсера HTML:
https://github.com/fb55/htmlparser2/
Если посмотреть ридми этого парсера, то можно увидеть, что у него совсем другое API: события "тег открывается", "содержимое тега", "тег закрывается".
Это вторая "школа парсинга", так сказать: "SAX парсер".
В отличие от "DOM-парсеров", "SAX-парсеры" парсят по чуть-чуть, и сразу обрабатывают, в то время как DOM-парсеры сначала всё считают и распарсят, а потом уже древо целиком дают.
Соответственно, когда я писал программы под Java-телефоны в нулевые, там не использвались DOM-парсеры, потому что памяти оперативной, выделяемой на программу/игру, не хватало на подобную роскошь (хз, сколько там было, может быть 64 килобайта или типа того).
Поэтому использовались SAX-парсеры, которые не потребляют оперативку, но и не строят "AST" (древо).
Это так, просто, дед опять молодость вспомнил.
Аноним 14/03/19 Чтв 02:46:55 136393251
>>1335602 (OP)
Лучше запили имиджборду в торе, что бы можно было спокойно обсуждать наркоту и цп.
14/03/19 Чтв 03:24:49 136393452
Кстати, HTML парсинг в контексте имиджборд до сих пор иногда актуален, т.к. древние движки типа iichan.hk не имеют своего API, и они даже запилили для своей доски клиент на Адроиде под названием "Сырноид", который парсит HTML "на лету".
https://kerrigan.bitbucket.io/cirnoid/
(не ищут лёгких путей)

Ну и в сторонних клиентах типа Overchan тоже просто парсят HTML:
https://github.com/miku-nyan/Overchan-Android/tree/master/src/nya/miku/wishmaster/chans/cirn

>>1363932
> Лучше запили имиджборду в торе, что бы можно было спокойно обсуждать наркоту и цп.
Хорошая идея, на самом деле.
Даркнет всё прочнее входит в нашу жизнь, смотря на то, как вокруг закручивают гайки.
Там даже и монетизировать можно было бы, повесив какие-нибудь баннеры с наркотой и торговлей рабами.
14/03/19 Чтв 04:22:48 136394253
Ещё вот задачка: как сформулировать надпись "Read more".
По-английски я сформулировал это как "Show more" (звучит, на мой взгляд, адекватнее в данном контексте, чем Read more).
Для русского были варианты: "Показать текст полностью", "Показать полностью", "Показать целиком", "Показать всё", "Читать далее", "Раскрыть".
Пока склоняюсь к "Раскрыть".
Мб какие-то ещё варианты есть.
14/03/19 Чтв 04:25:41 136394354
>>1363942
С другой стороны, "Раскрыть" звучит как-то угрожающе, оставлю "Показать полностью".
14/03/19 Чтв 04:35:18 136394455
Кстати, интересное наблюдение: на форчане скорость постинга очень велика, но при этом посты короткие и очень простые по синтаксису (цитата, текст, редко — спойлер).
На дваче — скорость постинга гораздо спокойнее, но при этом посты "наши" любят писать "от души" — на экран, а то и на два — и проявляют много творчества при форматировании (творческая натура).
Аноним 14/03/19 Чтв 07:37:55 136396656
>>1363944
У них борда и быстрее кстати, интересно почему.
20/03/19 Срд 13:33:06 136748257
kohlchan.png (304Кб, 914x914)
914x914
Дежурный бамп, шоб не утонул.
Добавил какой-то kohlchan и какой-то 8ch (притон расстрельщиков мечетей).
https://catamphetamine.github.io/chanchan/?chan=kohlchan
https://catamphetamine.github.io/chanchan/?chan=8ch
(8chan в России заблочен, открывается через Тор)
Оба — на движке "vichan", который уже не разрабатывается, и копирует API форчана (с упрощениями, но при этом и с улучшениями в виде поддержки нескольких картинок на пост).
Вылезла пара багов: у Кольчана почему-то расширение миниатюр — об балды, то есть для картинки JPG может быть миниатюра (ВНЕЗАПНО) вопреки всем Законам Вселенной PNG (вставить картинку с Джеки Чаном).
Написал даже админу, но он сам мышей не ловит, на том оставил его в покое и просто загружаю все возможные варианты расширений картинок, и потом из них уже выбираю тот, который работает (высокая культура разработки в Восточной Европе).
Ещё у vichan-а нашёлся баг, что "images": 0, даже когда в треде куча картинок, но багрепорта им уже не отправить, т.к. они закрылись, поэтому там колхозится подсчётом картинок по постам вручную.

Ещё на 8chan-е узнал, что есть какой-то способ обхода блокировок РосКомНадзора.
https://github.com/ValdikSS/GoodbyeDPI
Эта вещь перехватывает исходящие TCP пакеты в Windows, разбивая их на части, вставляя нестандартные символы, чтобы обмануть DPI (Deep Packet Inspection, у нас на работе такую писали) на роутерах провайдера, чтобы они не засекли, что вы запрашиваете именно rutracker.org, и не ответили пакетом "сайт не найден".
Подобная есть и для Linux.
Драйвер называется "WinDivert".
Не тестил, мне и Тора хватает.
Аноним 27/03/19 Срд 23:46:01 137119658
Забил чтоле блять?
28/03/19 Чтв 15:03:25 137142159
doc2019-03-1001[...].mp4 (4786Кб, 1080x2076, 00:00:11)
1080x2076
iOSChart.png (166Кб, 1125x2436)
1125x2436
iOSChartNight.png (159Кб, 1125x2436)
1125x2436
>>1371196
> Забил чтоле блять?
Да не, код крутится, коммиты мутятся.
Не учитывая того, что я уже пару недель как положил болт на свою основную работу (нехрен зарплату задерживать по 3 месяца), прошлую/эту неделю возился ещё с конкурсом Телеги на 125 тысяч долларов.
По условиям конкурса Телеги хотел, чтобы вы написали программу на любом языке (iOS, Android, JS), суть такова: имеется массив с данными вида X, Y1, Y2, ..., и по этим данным требовалось строить интерактивные графики с YOBA-анимациями (см. прикреплённые файлы). На всё про всё давали две недели, но я, естественно, думал: "да ладно, начну на следующей неделе", "да ладно, начну на этой неделе", "да ладно, воскресенье ещё целое будет", "да ладно, целых 4 часа осталось, самое время начинать". В итоге, конечно, к концу конкурса ничё не сделал, но спать после такого интенсива не хотелось, и сидел допиливал, пока не сдался в итоге на YOBA-анимациях (я вертел, сами делайте свои анимации).
По результатам запилил библиотеку, если кому интересно/надо:
https://catamphetamine.github.io/chartogram/
Теперь надо будет раскидывать все завтраки, которыми я две недели кормил менеджера на работе, и пилить уже интеграцию с этой платёжной системой, пока они ничего не заподозрили.
Аноним 29/03/19 Птн 08:16:36 137176160
15536963401690.jpg (99Кб, 500x550)
500x550
>>1371421
> возился ещё с конкурсом Телеги
Аноним 29/03/19 Птн 15:59:08 137195561
>>1357986
Даю подсказку: вводишь еще одно условие - длина текста. Если есть стоп-слово и длина поста меньше заданной - скрыть.

мимо-от-нечего-делать-написал-аналог-спеллов-куклоскрипта
Аноним 29/03/19 Птн 23:17:04 137212362
Прикольный проект! Давай мы тебе помогать будем. И для нас полезно, и проект мы может приведем к какому-то удобоваримому виду.
Пробежался по коду 5 минут, и хотелось бы отметить пару вещей, которые могли бы привлечь контрибьютеров:
1) Реакт версии 16.6. Без хуков разрабатывать уже не айс.
2) Нет линтера. Без него все будут коммитить в своем стиле и работать станет невозможно. Я на дух не переношу код без точек с запятой.
3) Файловая структура. То, что файлы лежат в двух кучах - не ок, когда еще тесты добавятся, то будет вообще пиздец. Может рассуешь по папкам?
Пока все, но это я не всматривался еще.
04/04/19 Чтв 01:40:14 137472763
image.png (541Кб, 752x682)
752x682
04/04/19 Чтв 01:44:44 137473064
>>1371955
> Даю подсказку: вводишь еще одно условие - длина текста. Если есть стоп-слово и длина поста меньше заданной - скрыть.
> мимо-от-нечего-делать-написал-аналог-спеллов-куклоскрипта

Да, это была одна из первых идей по улучшению скрытия у меня тоже, однако вскоре я понял, что это не вариант, так как даже в коротких сообщениях может быть смысл/интерес.
Например, "По последним данным на 2019 год дефлятор ВВП Парагвая сосёт член".

К тому же, была драма в /b/ в свой время, когда создатель ДоллЧана начал скрывать все посты со словами Крым, ДНР, ЛНР, и т.п., отчего у Абу (видимо) пригорело, и он издал указ "с завтрашнего же дня запретить доллчан во всея бе".
А поскольку я собираюсь питчить данный проект Самому, то лучше не гневать.
04/04/19 Чтв 01:45:56 137473265
>>1371955
> Даю подсказку: вводишь еще одно условие - длина текста. Если есть стоп-слово и длина поста меньше заданной - скрыть.

Аналогично, в /sn/ бывают пасты на два экрана, в которых проскакивает пара матов, которые там к месту, но из-за скрытия такие пасты полностью скрывались бы, что не вариант.
В общем, мой вариант скрытия лучше по всем параметрам.
04/04/19 Чтв 01:52:53 137473366
>>1372123
> Прикольный проект!
А будет ещё прикольнее.

> Давай мы тебе помогать будем.
Ну, хз, можно посмотреть, как пойдёт.
Я художник и я так вижу, поэтому у меня право вето.

> И для нас полезно
У вас есть возможность поучиться у квалифицированного разработчика.

> , и проект мы может приведем к какому-то удобоваримому виду.
Я его и сам приведу, но если хотите поучиться — попробуйте.

> Пробежался по коду 5 минут, и хотелось бы отметить пару вещей, которые могли бы привлечь контрибьютеров:
> 1) Реакт версии 16.6. Без хуков разрабатывать уже не айс.
Не нужны эти ваши новомодные фичи.
Вы ещё молодые, вам всё весело — хуки, хуюки...
Я вам говорю, не стоит вскрывать эту тему.
Но вы, пока шишек своих не набьёте, не поймёте.

> 2) Нет линтера. Без него все будут коммитить в своем стиле и работать станет невозможно.
Ну, вообще да, можно было бы. Можете запушить, я просто в линтерах всяких не разбираюсь, куда там чего.

> Я на дух не переношу код без точек с запятой.
У меня весь код без точек с запятой (был, есть и будет).
Я ещё раньше писал не в camelCase и на русском языке, так что вы ещё не видели всего в этой жизни.

> 3) Файловая структура. То, что файлы лежат в двух кучах - не ок
Сказывается недостаток опыта у негодующего — как раз таки такая структура файлов в серьёзных проектах.

> , когда еще тесты добавятся, то будет вообще пиздец. Может рассуешь по папкам?
А может ты себе по анусу рассуёшь?

> Пока все, но это я не всматривался еще.
пёс
04/04/19 Чтв 01:59:58 137473467
>>1372123
Есть две задачки: одна — про голосовалку политачевскую, вторая — про посты отправляемые. Какую сами возьмёте, а какую другим оставите?

Голосовалка:
Я уже прикрутил кнопки репутации в /po/, но они ничего не делают.
https://catamphetamine.github.io/chanchan/po/
В файле ThreadComment.js есть метод `.onVote()`.
Можно: проследить, что делает 2ch.hk при голосовании, и слать такой же HTTP запрос.
Также в localStorage хранить массивы upvotes и downvotes, которые отображать при показе постов ("свои голоса": плюсовал или минусовал данный пост, может ли голосовать или уже голосовал).
Ограничить массив по длине, чтобы не переполнил localStorage.
Документацию по API — добавить в 2ch/API.md
https://github.com/catamphetamine/chanchan/blob/master/docs/2ch.hk/API.md


Постинг:
Я уже прикрутил кнопку "ответить", но она ничего не делает.
В файле ThreadComment.js есть метод `.onReply()`.
Можно: прочитать доки Гугловой РеКапчи; проследить, что делает 2ch.hk при голосовании, и слать такой же HTTP запрос.
Также в localStorage хранить массив comments, который отображать при показе постов ("свои посты": помечать свои посты в треде).
Ограничить массив по длине, чтобы не переполнил localStorage.
Второй массив сделать: "trackedThreads".
Это будет задел для трекера тредов.
Документацию по постингу — добавить в 2ch/API.md
https://github.com/catamphetamine/chanchan/blob/master/docs/2ch.hk/API.md
04/04/19 Чтв 02:03:40 137473568
Сам я допиливал свои графики для конкурса Телеги.
Накрутил немного YOBA-анимаций:
https://catamphetamine.github.io/telegram-charts-contest/
По Андроиду уже объявили результаты, какой-то 25-летний парень из Петрограда получил $50k. Вот это заработок в интернете... В общем, Павел Дуров по-братски там отсыпает, всего человек 20 на Андроиде вроде бы в призёрах.
Новый конкурс обещают уже на выходных, так что мб будет интересно.
04/04/19 Чтв 02:05:24 137473669
А вообще, мне надо бы уже сделать "бесконечную прокрутку" для постов и тредов, а не показывать весь список сразу, чем я и займусь в качестве следующей фичи.

Вот приоритетный список фичей:

Add "infinite scroll" (streaming) for loading threads and posts.
Add message posting.
Add thread watching.
Add thread auto-update.
Add "favorite" boards list.
Add dark mode.
Add a non-default theme.

Хз, успеем ли до лета.
Желательно.
Имя 08/04/19 Пнд 04:31:04 137704670
Зашёл тут в /po/ потестить лайки, и увидел тред про некую вайпалку, ссылки на которую запрещено постить здесь, и которая выложена на житхабе.
Интересная программа, да... На питоне написана, с примесью C++ для GUI, и даже содержит три аниме-помощницы на выбор.
Автор оказался хорош: я его спросил пояснить за коды ошибок, и ему было не лень расписать мне всё в деталях, поэтому я обновил документ с API.
Добавлены разделы:
Постинг: https://github.com/catamphetamine/chanchan/blob/master/docs/2ch.hk/API.md#%D0%BF%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3
Голосование: https://github.com/catamphetamine/chanchan/blob/master/docs/2ch.hk/API.md#%D0%B3%D0%BE%D0%BB%D0%BE%D1%81%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
Анон, возжелавший принять участие: можете воспользоваться этой документацией.
Я сам пока ещё позадрачиваю мелкие доделки, ближе к маю мб возьмусь за постинг.

Конкурс Павла Дурова номер 2, кстати, начался в субботу, и там слишком YOBA-анимации и YOBA-фичи, и дают всего неделю на этот раз, но призовой пул снова $150k.
Интересное предложение, но принимать участия в нём я, конечно же, не буду.

Чего ещё прикрутил...
Добавил навигацию по просматриваемому видео стрелками влево-вправо, паузу пробелом, mute/unmute по клавише M, fullscreen по клавише F (всё это — как для .webm, так и для youtube)
13/04/19 Суб 06:22:12 138013171
image.png (560Кб, 2846x1859)
2846x1859
image.png (553Кб, 2852x1861)
2852x1861
image.png (558Кб, 2855x1873)
2855x1873
По мотивам дискуссии в /d/ https://2ch.hk/d/res/421281.html#630545 набросал раскрытие ответов к постам в стиле Реддита (он же Пикабу).
Прикрепляю скришоты того, как это выглядит.
На первой картинке — когда ответы не раскрыты.
На второй картинке — когда одна ветка ответов раскрыта.
На третьей картинке — когда раскрыта глубокая ветка ответов.
Посмотреть вживую можно всё там же, на демо-сайте:
https://catamphetamine.github.io/chanchan/
Также нажимаются полоски древа ответов (они работают как кнопка скрытия ветки).
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов