- 1
- 2
- 3
- 4
static bool is_digit( const char ch )
{
return (ch >= '0' || ch <= '9');
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−52
static bool is_digit( const char ch )
{
return (ch >= '0' || ch <= '9');
}
пятничный код, писаный за час до ухода с работы. час после написания был убит на то что бы понять почему `is_digit('/') == true`.
habrophag 26.08.2016 18:39 # +2
Но вот чего не понимаю я, так это нахера раз за разом плодить isdigit фунции! Почему нельзя поискать в стандартной библиотеке?!
void_maln 26.08.2016 18:43 # −1
guesto 28.08.2016 22:40 # +2
void_main 28.08.2016 22:46 # −21
Hubactep 26.08.2016 19:03 # −1
А если в стандартной библиотеке такой функции нет? Это же сишка. И вообще может быть ему ещё потребуются цифры IVXLCDM из древнего рима.
void_maln 26.08.2016 19:05 # −1
3.14159265 26.08.2016 19:13 # −1
>Назвали бы по человечески и не ибали бы моск.
Как ты посмел покуситься на швитое: сишко- кресто- блядские значочки?
Сишкобляди негодуют.
void_maln 26.08.2016 19:14 # 0
Lokich 26.08.2016 19:39 # 0
CTEPTOP 26.08.2016 19:41 # +1
Это всё тот же глюковатый Лазарь.
HaskellGovno 26.08.2016 21:51 # 0
guesto 26.08.2016 21:52 # 0
Anal_teacher 26.08.2016 21:53 # −1
А нам всё равно
Что жопа что говно
Какой багор )))
guest6 29.01.2024 05:15 # 0
Вы ебанутые там все что-ли нахуй?
guest6 29.01.2024 08:44 # 0
guest6 29.01.2024 15:17 # 0
С момента выкидывания на мороз XDDM (примерно 15 лет назад) уже не актуально
guest6 29.01.2024 14:34 # 0
Какой пиздец )))
guest6 29.01.2024 19:23 # 0
guest6 29.01.2024 20:19 # 0
Доктор Дизель
guest6 29.01.2024 14:39 # 0
guest6 29.01.2024 20:20 # 0
http://www.programmersclub.ru/
Этомой любимый форум теперь, словно бы я сам его написал
guest6 29.01.2024 20:21 # 0
https://programmersforum.ru/showthread.php?s=5418271ba02f889c2e4f979 c137621de&t=345594
guest6 29.01.2024 20:55 # 0
guest6 29.01.2024 21:10 # 0
guest6 29.01.2024 21:13 # 0
Подскажите, пожалуйста, есть ли разница в написании кода для Win 10 и Win server ? А
guest6 29.01.2024 21:13 # 0
yte[] buffer = new byte[48];
client.Receive(buffer);
string komanda;
komanda = Encoding.UTF8.GetString(buffer);
guest6 29.01.2024 21:21 # 0
guest6 29.01.2024 20:22 # 0
guest6 29.01.2024 20:24 # 0
✔️ Предлагаю профессиональную разработку сайтов от 3 т.р.!
- Верстка по готовому шаблону из Figma, PSD, Adobe X D, Avocode, Zeplin активно применяя HTML5 и CSS3.
Создание сайта под ключ или правки вашего существующего сайта. В работе использую как сайты без движка на чистом HTML/CSS так и WordPress.
guest6 29.01.2024 23:39 # 0
Кто поможет, буду очень благодарен. Заранее спасибо.
guest6 30.01.2024 00:08 # 0
Desktop 30.01.2024 00:16 # 0
guest6 30.01.2024 00:18 # 0
guest6 29.01.2024 20:44 # 0
Пиздец. Горите в аду.
guest6 29.01.2024 21:10 # 0
guest6 29.01.2024 21:12 # 0
Написал редактор, но с ошибкой, которую найти не могу, он считывает все текстовые файлы, но если там есть пустая строка, то он останавливается.
пожалкйста скажите что это сообщение 2000-го года
meinf 26.08.2016 20:57 # +1
ну тащемта в стандарте есть "человеческие" кейворды or/and етц, вот только я случаев их использования видел 2 раза
Soul_re@ver 26.08.2016 22:52 # +1
guest 26.08.2016 23:32 # 0
guest 26.08.2016 23:47 # 0
Такой-то кодстайл.
Dummy00001 26.08.2016 23:54 # 0
на самом деле немного даже обидно что народ не знает что в крестах уже давно есть not/and/or.
meinf 27.08.2016 22:32 # 0
kurwa 27.08.2016 22:41 # +2
bormand 27.08.2016 22:45 # +3
Не люблю это слово, неоднозначное оно... Где-то его юзают тупо как !empty(), а где-то - когда реально контейнер забит под завязку и в него больше ничего не засунуть... В итоге всегда приходится доку читать.
Desktop 01.03.2021 02:07 # 0
хуясебе
Steve_Brown 29.08.2016 11:43 # 0
// Да почему ж не компилируется?
bormand 29.08.2016 17:17 # +1
inkanus-gray 30.08.2016 11:50 # +6
inkanus-gray 30.08.2016 13:26 # +2
laMer007 30.08.2016 13:51 # +1
bitwise and
not and
других не видел
inkanus-gray 30.08.2016 15:32 # +2
guest6 29.01.2024 05:13 # 0
roman-kashitsyn 30.08.2016 13:54 # +3
Хотя, такое обычно называют andM
inkanus-gray 30.08.2016 15:35 # 0
roman-kashitsyn 30.08.2016 15:43 # +2
void_main 30.08.2016 18:29 # −23
guest6 10.02.2024 06:06 # 0
там есть "or" и "||"
guest6 10.02.2024 06:08 # 0
guest6 10.02.2024 09:21 # 0
HaskellGovno 26.08.2016 21:52 # +2
Может для него это вообще конкатенация
Analotolievich 30.08.2016 21:04 # 0
void_main 30.08.2016 21:14 # −31
Dummy00001 26.08.2016 19:14 # +2
стандартная библиотека умеет только плюс, минус и ребут. добро пожаловать в программирование встроенных систем.
inkanus-gray 26.08.2016 19:58 # +2
И это нужно не только во встроенщине, а, например, чтобы загрузочное ядро не писать на ассемблере.
guest 26.08.2016 20:17 # +1
Dummy00001 26.08.2016 20:22 # +4
до кучи дорога еще больее длиная.
guest 26.08.2016 20:25 # 0
но я не понимаю нафига тогда на си это писать?
какое преимщуество у сей перед асмом если нет ни картинок, ни разговоров ни стека ни кучи?
Dummy00001 26.08.2016 20:34 # +4
деталей не знаю, но на линухе - официальная реализация ACPI писаная преимущественно Intel'овцами - это 4МБ сырцов.
удачи пытаться это счастье на голом железе запускать.
ЗЫ то ли я отстал от времени, то ли народ совсем не понимает catch-22 бутстрапа.
guest 26.08.2016 20:37 # +2
ты совершенно прав
acpi машина тяжеловата для таких задач)
Да я все понима: чтобы что-то сделать нужна операционка, а операционки у тебя нет.
Окей, допустим я гружусь через API биоса и железа. Ну там сначала заполняю процессору адрес таблицы GDT, потом ставлю бит в контрольный регистр итд
Это я все понимаю
но вопрос: нахуя это на сях-то делать??? зачем эти 100 строчек на асме обарачивать в функцыю на сях?
Dummy00001 26.08.2016 20:48 # +1
народ просто не хочет парится с асмом. поэтому на асме пытаются делать только самый минимум.
100 строк асма может быть для любителей и не сильно много, но если тебе несклько проектов поддерживать на разном железе, то у тебя потенциально старновится несколько "100 строчек асма". в добавок - "100 строк асма" которые не всякий может написать или поправить.
Desktop 01.03.2021 02:08 # 0
bormand 01.03.2021 07:52 # 0
TOPT 01.03.2021 10:30 # 0
JloJle4Ka 01.03.2021 12:19 # 0
Desktop 01.03.2021 13:08 # +1
Потом инкрементил счётчик и смотрел те, где есть какой-то пиздёж
bormand 01.03.2021 13:17 # +1
Desktop 01.03.2021 13:24 # 0
Всё хочу сделать юзерскрипт, который добавлял бы кнопки перехода на следующий и предыдущий говнокоды, да лень
Desktop 01.03.2021 13:30 # +1
bormand 01.03.2021 18:19 # +1
Desktop 01.03.2021 18:25 # 0
guest6 01.03.2021 18:21 # 0
bormand 26.08.2016 21:22 # +2
Он, видимо, о стартовом коде BIOS'а, который просыпается в темноте и без памяти. Вот там да, чтобы юзать память её надо сначала включить... А до этого или хаки с кешем или romcc...
guest 26.08.2016 21:24 # +1
bormand 26.08.2016 21:25 # +1
guest 26.08.2016 21:27 # 0
> 40?
bormand 26.08.2016 21:27 # 0
HaskellGovno 26.08.2016 21:47 # 0
guesto 26.08.2016 21:48 # 0
HaskellGovno 26.08.2016 21:50 # 0
Dummy00001 26.08.2016 23:51 # 0
https://en.wikipedia.org/wiki/Martin_Bormann
guest 27.08.2016 00:00 # −1
небось в децтве гонял tasm, turbo c и borland pascal
guest 26.08.2016 21:40 # +2
Но по какой-то причине 99% программистов умеют только канвас в джаваскрипте, а всё что ниже уровнем для них темный лес
guesto 26.08.2016 21:47 # +1
guest 26.08.2016 21:51 # 0
Anal_teacher 26.08.2016 21:54 # −100
guest 26.08.2016 23:53 # +1
guest 26.08.2016 23:56 # +1
guest 26.08.2016 22:48 # +2
guest 26.08.2016 23:50 # +3
Нахуя вообще что-то про комптютеры знать?
guest 26.08.2016 23:55 # +2
guest 26.08.2016 23:58 # +2
но открою тебе страшную тайну: чем шире у тебя кругозор, тем больше идей ты можешь позаимствовать, тем лучше ты понимаешь как все НА САМОМ ДЕЛЕ работает, тем больше всего интересного ты можешь придумать, тем больше проблем ты можешь решить, тем ты круче как специалист, тем больше разных работ ты можешь выполнять, и наконец чтобы мозг не засох его нужно тренировать изучая новое.
Dummy00001 27.08.2016 00:07 # +3
ЗЫ на самом деле, параллели между разными прикладными областями проводить могут не многие. поэтому и знания для них из других областей просто обуза. высшее образование помогает этот барьер перейти, но не всем удается.
guest 27.08.2016 00:14 # 0
Ну правда: чем Enterprise service bus не System Bus?
guest 27.08.2016 00:15 # +2
ну так стать программистами не всем удается
многие так и пишут одинаковый бойлерплейт на галерах годами.
Никогда не видели энтерпрайзника у которого 15 лет опыта написания DAO бинов?
guest 27.08.2016 00:16 # 0
guest 27.08.2016 00:17 # +1
вот даже в Spring Boot
3_14dar 27.08.2016 00:22 # +1
Вернее, не только лишь не многи. Мало кто это может делать.
3_14dar 27.08.2016 00:20 # −1
guest 27.08.2016 00:26 # +2
guest 27.08.2016 00:39 # 0
Так что ты сравнил ужа с ежом.
guesto 27.08.2016 00:45 # +3
фирмварь и загрузка компа это тоже дженерик вещи
я же не предлагаю тебе выучить наизусть аргументы утилиты wbadmin, правда?
3_14dar 27.08.2016 03:08 # 0
CHayT 26.08.2016 21:54 # 0
bormand: 13
CHayT: В системе с каким основанием?
bormand: 13
CHayT: В системе с каким основанием?
...
3_14dar 27.08.2016 00:19 # 0
guest 26.08.2016 21:33 # 0
там надо "знать" по какому адресу сидит какой девайс и как его включать
guest 26.08.2016 21:38 # 0
а ROMCC это безстековый си?
Anal_teacher 26.08.2016 21:43 # 0
А через анус никак нельзя узнать?.. Я люблю через анус.
guest 26.08.2016 21:44 # +4
Но ACPI это еще пол беды. Раньше была в PCI такая тема: Interrupt routing. Вон там можно убиться
guest6 10.02.2024 06:06 # 0
ты можешь положить целое число (или символ) в регистр, и вызвать функцию, которая её оттуда считает.
Стект тебе не нужен впринципе
guest6 10.02.2024 09:29 # 0
Правда, у стандартной молоки переголова больше, чем у стека, поэтому придётся костылить более лёгкий заменитель.
Единственное, для чего стек необходим, так это для адресов разврата. Да и то на некоторых рахит-тинктурах можно справиться без него: класть адрес разврата в регистр, а если тебе из функции нужно вызвать функцию, то сохранять его где-нибудь (маллокать).
Dummy00001 26.08.2016 20:20 # 0
inkanus-gray 27.08.2016 01:06 # +2
А нет, не то. Там будет список функций, не ссылающихся на ОС. А список функций, не использующих оперативку, был где-то ещё. Может быть, в ROMCC?
Dummy00001 27.08.2016 03:37 # +3
Close enough. В MS-DOS времена это было нормой. Не то что бы OS таки и подталкивала ею пользоваться, была чем то удобным/надежным/незаменимым(*). Сейчас подобный паттерн проявляется в ARM системах где OS вообще нет.
(*) Сейчас я понимаю почему в те времена юниксоиды над MS-WinDOS смеялись... Они уже в 80х настоящими ОС пользовались. А вин/досы до сих пор... аптайм в один месяц только с трудом, и программировать под них как было напряжно, так и осталось.
guesto 27.08.2016 04:27 # +4
в 85 году у серьезных компов уже была виртуальная память, защищенный режим, многопользовательскость, вытесняющая многозадачность, безопасность на уровне fs и API на C.
А у персоналок был API на прерываниях в firmware, один пользователь и 640 к памяти на всех. Прямо как у большых компов 60х.
Dummy00001 27.08.2016 11:48 # +1
SGIшки на которых делали второго терминатора (1991) столи 9-12 штук. White box PC в те времена стоили 1.5-3 штуки. Производители не дураки и не торопились цены сбрасывать. Очень сильно не торопились. Наличие операционок тоже роль играло - и кроме некрософта и SCO никто в это деньги не вкладывал. линух и фри-бсд не от хорошей жизни люди (любители!) делали.
MAKAKA 01.03.2021 23:27 # 0
ебать ты олд
MAKAKA 01.03.2021 23:11 # 0
urpyHoK 29.01.2024 04:11 # 0
> нахера раз за разом плодить isdigit фунции!
Зачем использовать готовую, отлаженную десятилетиями функцию из стандартной библиотеки твоего языка, если можно написать свою и бажную?
3_14dar 27.08.2016 00:23 # 0
guest 27.08.2016 00:31 # 0
Ну тесты писать конечно надо. Только не так.
guest 27.08.2016 00:31 # +1
3_14dar 27.08.2016 03:09 # 0
guesto 27.08.2016 03:12 # +1
это говорит питониста, у которого вот уже 10 лет не могут перейти с двойки на тройку потому что не могут дговориться о всех этих str, unicode, bytes, литералах b'', u'' итд
3_dar 01.03.2021 23:23 # 0
MAKAKA 01.03.2021 23:26 # 0
guest6 01.03.2021 23:28 # 0
MAKAKA 01.03.2021 23:31 # 0
guest 27.08.2016 05:46 # 0
1. Ебанутый синтаксис
2. Что есть в пхп тут нет
3. Листы, словари, кортеджи
4. Нахуй всратый юникод.
5. Динамическая типизация
6. Нет адресации и указателей
3oJloTou_xyu 27.08.2016 06:30 # +3
Soul_re@ver 27.08.2016 09:11 # 0
Dummy00001 27.08.2016 11:35 # 0
MAKAKA 01.03.2021 23:26 # 0
SQL инджекшенов из коробки?
guest 27.08.2016 05:34 # +1
inkanus-gray 27.08.2016 12:40 # +1
inkanus-gray 27.08.2016 12:42 # 0
Я всегда говорил, что сишечке не хватает диапазонов и множеств.
Dummy00001 27.08.2016 12:54 # +1
ЗЫ классическая реализация isdigit/etc для ASCII/Latin1 это массив 256 байт, каждый байт это бит маска к каким классам эта буква принадлежит.
inkanus-gray 27.08.2016 13:08 # 0
Уже что-то. Хотя хотелось бы и в других местах диапазоны увидеть.
> ЗЫ классическая реализация isdigit/etc
Собственно <ctype.h> и рассчитывает на то, что в исполнимый файл будет вшит этот массив. Хорошо, что в байте только 8 бит, а то пришлось бы таскать больше мусора.
Dummy00001 27.08.2016 13:30 # +1
диапазоны плохо сочетаются со статической памятью. да и динимику делать с ними тоже опастно.
думаю что на каком буст пп (boost_pp_for) можно сваять раскрытие `'0' .. '2'` в `{ '0', '1', '2' }`. в 11ых крестах вот такое уже работает - `for (char a : {'0', '1', '2'})`. вопрос сможет ли компилер это съоптимизировать.
вот на этом:
clang догадался как соптимизировать - а gcc нет. (можшь на https://gcc.godbolt.org погонять)
bormand 27.08.2016 13:31 # 0
Неужели в вычитание и сравнение?
Dummy00001 27.08.2016 13:33 # +3
гцц в лоб генерит (в зависимости от уровня оптимизации) либо таблицу с числами и цикл, либо пачку сравнений и джампов:
Soul_re@ver 27.08.2016 13:44 # 0
Dummy00001 27.08.2016 13:55 # 0
guest 27.08.2016 14:05 # 0
Soul_re@ver 27.08.2016 14:25 # 0
guest 27.08.2016 14:31 # 0
Dummy00001 27.08.2016 13:48 # +1
код почти идентичен у кланга и гцц:
... вот поэтому в крестах и нет диапазонов.
guest 27.08.2016 14:03 # 0
https://godbolt.org/g/OKnVrx
Dummy00001 27.08.2016 14:05 # 0
guest 27.08.2016 14:10 # +1
Soul_re@ver 27.08.2016 14:26 # +2
kipar 28.08.2016 22:06 # +2
void_main 28.08.2016 22:14 # −21
inkanus-gray 27.08.2016 14:36 # 0
seg000:2D83 push ax
seg000:2D84 mov ax, 5Ah
seg000:2D87 call sub_14D8
seg000:2D8A mov ax, 61h
seg000:2D8D push ax
seg000:2D8E mov ax, 7Ah
seg000:2D91 call sub_14D8
inkanus-gray 27.08.2016 14:44 # 0
guest 27.08.2016 16:04 # 0
inkanus-gray 27.08.2016 16:23 # 0
Если интересно, то это код, сгенерированный антикварным TP 3.0, в котором ещё не было модулей и соглашения о вызовах были другими. Если я правильно, понял, то через ax передаётся последний аргумент встроенных функций. Такая вот оптимизация.
inkanus-gray 27.08.2016 14:46 # +1
Выхлоп дизассемблера (BP 7.0):
На вхоже два непересекающихся диапазона. Однако, оптимизатор догадался вообще не создавать множество в памяти, а сделать всего четыре сравнения.
void_main 27.08.2016 14:55 # −22
Dummy00001 27.08.2016 15:05 # +1
я про битсет в крестах думал, но поленился. и в крестах это только bitset и делается, потому что нативного типа данных никакого не хватит. но так как это битсет, у него и статической инициализации никакой нет, придется через переменные крутится извращатся инициализировать.
inkanus-gray 27.08.2016 15:25 # 0
Замечательно, что на x86 уже есть хорошие инструкции для работы с такими битсетами (bt/btr/btc/bts).
И да, компилятор иногда умничает, и, если множество представлено константой, то и вовсе его выкидывает, как в этом примере.
inkanus-gray 27.08.2016 23:05 # 0
http://cs.nyu.edu/~bacon/setl/doc-legacy/setlprog.pdf
SETL имел алголоподобный синтаксис, появился на десятилетие раньше Си и Паскаля, но почему-то его идеи нашли применение в Питоне, в ECMAScript (да и то реализована малая часть), а в языки со статической типизацией его конструкции вводить боялись.
CTEPTOP 27.08.2016 23:13 # −3
Она что либо представляет из себя? Не пробовали? Заставка с видом на вечерний Берлин смотрится очень романтично.
inkanus-gray 27.08.2016 23:25 # +2
CTEPTOP 27.08.2016 23:32 # −2
Dummy00001 27.08.2016 23:48 # +1
Не знаю. Дрезден мне нравится больше. Имел счастье там 2 года жить.
А если современный мегаполис - то тогда Франфурт. Оч даже ничего место.
А Бавария... Это на любителя: там жизнь слишком размеряная и консервативная. Я к слову там панельных коробок вообще не видел - но да Бавария большая (деревня). в Германии в принципе панельные коробки редки и есть только в восточной (== пережиток совка), либо дешёвое социальное жильё (== кучи русской и не только пьяни, бабулек и прочего, прям заповедник совка: а вы помните как при Сталине все круто было? потому что эти немцы вообще нифига не умеют. не то что Сталин).
void_main 27.08.2016 23:50 # −21
Dummy00001 28.08.2016 00:29 # +3
Если тебе нравится размереная спокойная жизнь - то однозначно да. (Но и найти место где жизнь бьёт ключём тоже не проблема.)
С другой стороны, не все легко переносят переезд и отдаление от друзей и близких. И по началу, ни времени ни денег туда сюда кататся не будет. Но Европа/Германия это все равно намного ближе чем какие США (знакомый нелегально выехал - как нелегал прошел через пару нищенских периодов; ~5 лет родителей не видел, пока не легализовался).
inkanus-gray 28.08.2016 00:02 # 0
https://de.wikipedia.org/wiki/Plattenbau
Вообще платтенбау не имеет отношения к Совку.
void_main 28.08.2016 00:04 # −20
inkanus-gray 28.08.2016 00:49 # 0
https://twitter.com/dasisteuropa
Dummy00001 28.08.2016 00:22 # +1
"типичная" мюнхенская высокоэтажка (5 этажей максимум в мюнхене) они может только со сторы выглядят как советские панельные (хрущевкие и брежневские застройки).
большинство (== все что я видел в М) ближе к советским строениям сталинских времен с высокими потолками. и метраж, и цена у них соответствующая.
мюнхен "элитный" город: они там принципиально строят относительно дорогое жильё, которое нормальные служащие могут позволить себе только с трудом. на эту тему тут временами в прессе бывают срачи.
inkanus-gray 28.08.2016 01:00 # 0
https://de.wikipedia.org/wiki/Neuperlach
https://goo.gl/maps/Pzegq6UfWjn
Dummy00001 28.08.2016 01:49 # +1
ЗЫ ну тут почти это и описывается:
https://de.wikipedia.org/wiki/Neuperlach#Gegenwart
void_main 28.08.2016 21:32 # −20
kipar 28.08.2016 22:18 # −1
void_main 28.08.2016 22:24 # −22
kipar 28.08.2016 22:35 # −1
void_main 28.08.2016 22:36 # −23
kipar 28.08.2016 22:56 # −1
void_main 28.08.2016 23:00 # −22
Dummy00001 28.08.2016 22:32 # −1
никаких сравнений не нашел - народ рекомендует просто попробовать, но лазарус неожиданно достаточно большой (что-то в районе 250М на бубунте) и у меня так руки до него и не дошли.
kipar 28.08.2016 22:55 # +2
Но если формы не нужны, то как ide - более-менее. Поглупее чем дельфи, чаще не может угадать тип переменной, но в целом можно пользоваться. Разве что бесит когда он в каком-то одном файле какую-нибудь хитрую конструкцию не может распарсить, и из-за этого весь автокомплит отваливается, вместо этого он будет посылать к месту с "ошибкой".
В языке отличия. У генериков другой синтаксис, лямбд нет и не будет(а в дельфи есть), зато перегрузка операторов понятнее сделана, есть "+=" и препроцессор почти-сишного уровня. Но если ничем таким не пользоваться, то совместим.
Оптимизация - ну, печальная, с дельфи не сравнить. Зато в лазарусе программы маленькие, а в дельфи они с каждой версией все больше весят.
guest6 29.01.2024 15:43 # 0
guest 27.08.2016 16:02 # 0
void_main 28.08.2016 22:28 # −20
guest6 29.01.2024 15:23 # 0
Недавно, когда я рассказывал, как мы пишем тесты, я уже упоминал, что в TypeScript’е появилось новое ключевое слово using. Оно позволяет нам сделать код чище и более линейным, избавившись от try/finally.
>>>
GCбляди, и их ручное управление ресурсами. Языки с GC -- не безопасные, старайтесь ничего серьезного на них не писать
guest6 29.01.2024 15:31 # 0
Там короче 10 дней учат сети, 10 дней учат линукс, 10 дней учат питон, и вжух
guest6 29.01.2024 16:25 # 0
алых роз
guest6 29.01.2024 16:28 # 0
guest6 29.01.2024 16:43 # 0
guest6 29.01.2024 21:42 # 0
это для вас https://twitter.com/Q0MT6pFmbVqynsM/status/1751858160334205205
guest6 29.01.2024 21:59 # 0
guest6 29.01.2024 22:50 # 0