- 1
Именно поэтому я за «PHP».
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Именно поэтому я за «PHP».
guest # 0
TEH3OPHblu_nemyx # 0 ⇈
MAKAKA # 0 ⇈
Myxa # 0 ⇈
MAKAKA # 0 ⇈
5602 мухи не могут ошибаться
guest # 0 ⇈
Fike # 0 ⇈
Desktop # 0 ⇈
MAKAKA # 0 ⇈
gost # 0 ⇈
gost # 0 ⇈
MAKAKA # 0 ⇈
Desktop # 0 ⇈
Desktop # 0 ⇈
gost # 0 ⇈
Надо же, буквально на днях про него песню слышал.
Desktop # 0 ⇈
MAKAKA # 0 ⇈
* https://en.wikipedia.org/wiki/Remove_Kebab
gost # 0 ⇈
https://www.youtube.com/watch?v=peCu-i6XT88
MAKAKA # 0 ⇈
Внезапно внятное призношение, можно английский качать
gost # 0 ⇈
Рекомендую . Один из самых приятных англоязычных каналов, которых я видел.
Desktop # 0 ⇈
https://www.youtube.com/watch?v=jsUvcjk8J5c
Desktop # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
Fike # 0 ⇈
Какая ирония )))
Stallman # 0
Компиляция Haxe в PHP
https://phprussia.ru/moscow/2020/abstracts/6648
Разработка расширений для PHP ... на PHP!
Именно поэтому.
MAKAKA # 0 ⇈
-- Зачем нужны ORM?
-- ActiveRecord vs DataMapper.
-- И одной из метрик автоматического тестирования является Code Coverage
Хотелось бы еще послушать таких докладов:
* Структурное программирование -- ключ к улучшению кода
* ООП: инновационный подход 21-го века
* SQL инъекции: как избежать?
Myxa # 0 ⇈
Мы тут ещё недавно обсуждали «Zephir» — пыхоподобный язык программирования, предназначенный исключительно для написания расширений для «PHP». Оказалось, что у зефира привкус «PHP» или даже «JS» (неожиданно, правда?):
https://govnokod.ru/26733
MAKAKA # 0 ⇈
Я реально знаю кейсы, когда логика валидации написана два раза: на JS и на беке (и иногда еще на уровне ограничений в базе, лол).
Это отвратительно!
Вообще самая постыдная для программиста задача, это два раза писать одну и ту же логику в двух местах на разных языках
Fike # 0 ⇈
guest # 0
gost # 0 ⇈
guest # 0 ⇈
gost # 0 ⇈
guest # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
перед запуском следующей части проверяй флаг
guest # 0 ⇈
Кстати, видел в одном C# реальном проекте, где посреди логики в цикле for было что-то типа
Чтобы UI не зависало. Какой багор )))
Desktop # 0 ⇈
Типа решаем систему дифференциальных уравнений на главном потоке и иногда даём остальному приложению подышать?
MAKAKA # 0 ⇈
Так таймер небось ставит, и получает сигнал (на юниксе) или APC (на пинде)?
>Чтобы UI не зависало. Какой багор )))
Багор действительно. Я видел как патчат обработку евентов чтобы делать модальный диалог, но это кал
Лучше такие задачи выносить на другой тред, и использовать что-то типа async/await (в решеточке оно есть)
bormand # 0 ⇈
Либо ты пытаешься тормознуть прогу на обращениях к ядру и получить ошибку (тот самый APC в винде или EINTR в линуксе). Либо ты какой-то флажок для треда выставляешь и ждёшь пока он сам съебёт. Либо ты убиваешь весь процесс нахуй.
Даже в джаве и шарпе вроде как interrupted exception в произвольный момент не вбросить.
MAKAKA # 0 ⇈
Как же делает пых?
bormand # 0 ⇈
MAKAKA # 0 ⇈
Я думал, там N потоков, каждый сосет из очереди запросы и обрабатывает
bormand # 0 ⇈
MAKAKA # 0 ⇈
Иначе чем это лучше CGI?
Но вообще похуй на паче
Получается что нужно или каждый запрос в отдельном процессе, или есть опасность налажать? Или пых в любой операции проверяет переодически, что 30 сек прошло?
bormand # 0 ⇈
MAKAKA # 0 ⇈
Fike # 0 ⇈
gost # 0 ⇈
MAKAKA # 0 ⇈
while(1){}
?
gost # 0 ⇈
bormand # 0 ⇈
MAKAKA # 0 ⇈
А если я оберну это в критикал секцию?
bormand # 0 ⇈
MAKAKA # 0 ⇈
bormand # 0 ⇈
MAKAKA # 0 ⇈
bormand # 0 ⇈
gost # 0 ⇈
MAKAKA # 0 ⇈
Объект какой-нить не осовободица
gost # 0 ⇈
bormand # 0 ⇈
Не аллоцирует память, не ходит в сеть, не берёт лочки, не трогает глобальный стейт. Нахуй он тогда нужен то? Тупо матан какой-то на приватной структуре?
gost # 0 ⇈
Но, конечно, «PHP» для этого слишком глуп.
bormand # 0 ⇈
А вот кстати я не уверен что среднестатистическая lock-free поебень готова к крашу участников...
MAKAKA # 0 ⇈
Смотри. Я пыхарь. Я написал какой-то код. Этот какой-то код должен помереть через 30 секунд. Чтобы он ни делал.
Пых ставит таймер в линксе или APC в винде или просто на другом потоке поджыдает, а потом делает ``pthread_kill`` или ``TerminateThread``
Вопрос: как пых знает, что он не сломает рантайм? Он всегда весь код делает безопасным?
gost # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
gost # 0 ⇈
MAKAKA # 0 ⇈
то-есть если я вошел в syscall, и провёл там 3 часа, то я сам себе злобный бртн
Как на винде -- интересно, да
Хотя нет, не интересно. Это же пых
gost # 0 ⇈
Угу. В таком случае, скорее всего, «Апач» просто убьёт воркера, как Борманд выше написал.
Fike # 0 ⇈
bormand # 0 ⇈
З.Ы. А в обработчике ставится бит PHP_CONNECTION_TIMEOUT в connection_status, который проверяется в куче мест и ты даже видишь его из пыхи.
guest # 0 ⇈
> который проверяется в куче мест
Ну то-есть всё таки всё сводится опять к банальному
while(! terminate) {
///
}
bormand # 0 ⇈
guest # 0 ⇈
Если процесс взял мутекс и умер, то мутекс освободили
А если поток, то нет?
bormand # 0 ⇈
А у треда почти всё расшарено с другими тредами. Там вообще не понятно что чистить, ибо большая часть объектов принадлежит процессу в целом.
Виндовый кросс-процессный мутекс то уйдёт в абандон, ок. И все кто его ждал получат ошибку соответствующую. А дальше то что делать? Данные то запороты, тебе хочется их чинить?
А быстрые мутексы типа позиксовых толком и не отпустишь, емнип. Они для ядра вообще не объекты.
3.14159265 # 0 ⇈
> Чтобы UI не зависало. Какой багор )))
Это наследие VB.
Там это же самое делалось DoEvents.
bormand # 0 ⇈
MAKAKA # 0 ⇈
Сейчас все пищат от async: той же самой кооперативной, просто с сахаром
bormand # 0 ⇈
MAKAKA # 0 ⇈
Но кто, скажите мне, не наябывался пися случайно в асинхронной процедуре sleep вместо delay и не вызывал оттуда случайно блокирующий синхронный IO?
3.14159265 # 0 ⇈
Я как-то прошёл мимо современных тенденций многопоточности.
MAKAKA # 0 ⇈
Смысл в том, что у тебя есть луп на треде, и ты вместо блокирующих операций используешь колбеки, но сахар позволяет тебе писать так, словно это все последовательный код.
Псевдокот
Таким образом на треде может роботать 100400 таких вот асинхронных функций без коллбечной лапши, и без пложения 100400 процессов, что может быть особо неприятно в виндуос (да и в юникс тоже ничего хорошего нету в неконтролируемом росте процессов)
3.14159265 # 0 ⇈
Иам внутри вмонтирован тред-пул и тред пока async ждёт может заниматься другими делами?
На delay тоже async нужно ставить?
PS: и await не вижу.
guest # 0 ⇈
Когда ты пишешь "delay(1000)" ты не останавлиааешь тред с точки зрения OS, а ты как-бы выходишь из функции, но сохраняешь ее контекст
Тред обрабатывает другие функции.
Представь, что тебе нужно в GUI треде каждую секунду менять цвет кнопки.
Ты не можешь сделать Thread.sleep, потому что остановка GUI треда на секунду это зависание UI, так?
А delay можешь сделать.
Но если ты случайно напишешь sleep, то всё сломаешь
>PS: и await не вижу.
Вероятно, должно быть так
await page = getHttpPage("http://ya.ru");
Это был псевдокот. Живые примеры есть в C#, Kotlin coroutines, python и вроде в свежем JS
3.14159265 # 0 ⇈
Да, я понял. Тред идёт заниматься другими делами. Типа легковесная многозадачность.
>Тред обрабатывает другие функции
А что будет если пул занят другими функциями и они бобровольно не возвращают потоки?
Не зависнет ли мой поток с delay(1000), на неопределённое время?
bormand # 0 ⇈
3.14159265 # 0 ⇈
И поток у меня отжали для каких-то тяжёлых вычислений. Его же мне вернут не через секунду, а после окончания расчёта?
guest # 0 ⇈
sleep -- именно такой дядя в кепке
Не давай свой поток кому попало. Stranger -- danger.
по сути весь блокирующий API придется переписать на async
3.14159265 # 0 ⇈
Пример: есть старое-доброе winapi приложение. Одна часть считает сложную ма-тема-тику, вторая перерисовывает окно.
Если сложный расчёт выполняется долго, окно «подвисает».
Выход: в сложном расчёте нужны DispatchMessage/DoEvents. Опять та же питушня.
bormand # 0 ⇈
3.14159265 # 0 ⇈
Как мне в этой парадигме управлять разными пулами?
Я думал await использует какой-то один неявный системный пул, как в крестах std::launch::async.
gost # 0 ⇈
В «Python» event loop можно создать явно и позвать на нём «run_until_complete()». См. https://docs.python.org/3/library/asyncio-task.html.
bormand # 0 ⇈
guest # 0 ⇈
Ну чудес не бывает же: async спассет от медленного IO, но не от нагрузки на CPU.
Опять таки, если ты сделаешь while(1){}, то всё зависнет же
ну либо нагрузку на CPU надо делать асинхронной тоже
await doAll()
Desktop # 0 ⇈
Я не знаю, как там в шарпе.
В Свифте делаешь отдельную DispatchQueue или вообще берёшь готовую и херячишь на ней тяжёлую работу, потом результат для отрисовки бросаешь на main, которая отвечает за UI.
Управление пулом потоков спрятано под капот.
guest # 0 ⇈
Desktop # 0 ⇈
Используется, конечно.
3.14159265 # 0 ⇈
Desktop # 0 ⇈
В Свифте нет async/await.
В Шарпе нет очередей (?)
guest # 0 ⇈
В .NET создается WorkerThread, проверь
https://i.postimg.cc/6Qr0WjJL/waiter.png
Desktop # 0 ⇈
А чо было не вернуться на тот же тред, который был до await'а?
Fike # 0 ⇈
Desktop # 0 ⇈
3.14159265 # 0 ⇈
Думаю в реализации await очередь должна быть непременно. Причём блокирующая.
Иначе поток обрабатывающий питухов, просто уйдёт в busy wait. Если они все вдруг решать ждать и dispatch loop останется без работы.
guest # 0 ⇈
EDT в жабе, WinProc, упоминаемый сегодня гостом итд.
Так что да, внутри оно обрабатывает все события, и вероятно засыпает
3.14159265 # 0 ⇈
Просто я в своё время насмотрелся на самопальное говнище с busy wait.
— Почему программа стабильно грузит одно ядро на 100%?
— Ну кто ж мог подумать, что таски кончатся?
guest # 0 ⇈
Особенно на ноутах хорошо работает, где народ за батарейку волнуется
Fike # 0 ⇈
bormand # 0 ⇈
Очередь ты можешь указать когда асинхронную таску спавнишь. А await просто будет ждать когда она завершится, ему похуй на очереди. Т.е. это 2 ортогональных сущности.
guest # 0 ⇈
await просто ждет Taskу
3.14159265 # 0 ⇈
Как?
bormand # 0 ⇈
Какой-нибудь var res = await pool.execute(LongCalculation);
guest # 0 ⇈
suspend значит "async".
Dispatchers.IO значит "фоновый тред"
Есть еще Dispatchers.UI
3.14159265 # 0 ⇈
bormand # 0 ⇈
По дефолту вроде через ui тред чтобы меньше ебли было.
Но я сварщик не настоящий.
guest # 0 ⇈
https://arghya.xyz/articles/async-await/
что для CPU bound вероятнее всего возьмут тред из пула
А для IO могут и не взять, ну анверное потому, что асинхролнный API реализует сама OS (через комплишен порт какой-нить)
Но это не точно
3.14159265 # 0 ⇈
Как-то сложно всё получается. Пулы, треды, корутины, IO, очереди какие-то.
Голова пухнет.
Взять всё, да и assParallelнуть…
guest # 0 ⇈
Разве что в UI тебе важно ходить из правильного места, а так-то тебе срать на тред
Где вызвали -- там и вызвали
bormand # 0 ⇈
У тредов на которые можно захуйнуть коллбек может быть SynchronizationContext. В частности у UI треда он всегда есть.
И по-умолчанию все работает тупо и понятно - если у текущего треда контекст есть перед вызовом await, то продолжение будет в том же контексте. Т.е. если ты писал обработчик для гуйни и ушел в await то код потом "возобновится" в ui треде и все безопасно. Если же контекста нету - то прям на том треде где таска завершилась.
Ну и можно сказать await something.ConfigureAwait(false) и сделать вид что контекста у тебя не было.
MAKAKA # 0 ⇈
если тебе не похуй где вызываться -- укажи контекст, если похуй, то уж как бог пошлет.
Тащемто мыслить надо не в терминах нитей, а в терминах контекст
Хочу UI контекст, или еще какой
MAKAKA # 0 ⇈
И если ты вместо асинхронного API для работы с IO возьмешь синхронный -- тоже зависнет.
Нужно быть аккуратным.
Это напоминает кооперативную многозадачность: каждая корутина отвественна за всю систему
Fike # 0 ⇈
Desktop # 0 ⇈
Если переписать на колбек, то тогда придётся делать мутекс. А с async'ом не надо.
Если же интересует вопрос, как задачи квантуются внутри лупа (а луп крутится внутри одного потока), то меня тоже интересует 🙂
3.14159265 # 0 ⇈
Да. Непонятна точная механика шедулинга.
bormand # 0 ⇈
А её и нет вроде. Это просто сахар для хуйни-на-коллбеках. Шедулинг точно такой же, как и у любой другой хуйни на коллбеках - очередь да разгребающий её ивентлуп.
Просто конпелятор за тебя нарубает красивый линейный код на уёбищные коллбеки. И помогает стейт протащить. Всё.
Там вроде даже вручную эти кишки можно дёргать без сахара.
3.14159265 # 0 ⇈
Вот и думаю: или оно до горя тупое, или я что-то не понимаю.
bormand # 0 ⇈
Асинхронная операция возвращает тебе future. Когда ты делаешь на ней await твоя async функция тупо возвращает управление. Но перед этим она подписывает следующий свой фрагмент на завершение этого future.
Вот и всё 🙂
Ты можешь все это делать руками без async/await. Все кишки доступны.
3.14159265 # 0 ⇈
Всё-таки на Сишке такое хрен в чистом виде не нахуевертишь.
Да и в других языках тоже. Из-за того что нужно прыгать на указатель внутри функции.
Разве что запускать все потоки в одном общем пуле с work stealing.
bormand # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
Она там для генератора изначально, но потом ее и для асинхронности пытались прикрутить
Она позволяла как раз уйти из функции, а потом вернуться с сохранением контекста
Почему-то мне хочется прикрутить суда понятие континуейшена, но вероятно зря
**yield
bormand # 0 ⇈
MAKAKA # 0 ⇈
3.14159265 # 0 ⇈
>прикрутить суда понятие континуейшена
Да, это же копрограммы (coroutines).
https://en.wikipedia.org/wiki/Coroutine
guest # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
MAKAKA # 0 ⇈
https://i.postimg.cc/6Qr0WjJL/waiter.png
В питоне -- run(..)
А в луа нужно ходить по корутинам, и каждой говорить resume, ну или цикл самому написать
Хотя пример не совсем честный, там вроде других тредов не создается
но могу наврать
Хуй знает точно
Золотой
bormand # 0 ⇈
MAKAKA # 0 ⇈
Myxa # 0 ⇈
3.14159265 # 0 ⇈
Логично. Ну не такой уж сахар тогда эти await.
Я когда-то в Сищке пытался сделать копрограммы на свитчах и обернуть их в макрос YIELD с автоинкрементом стейта, на котором произошёл выход.
Вышло в принципе неплохо, но всё-равно уродливо как-то.
bormand # 0 ⇈
ctx->state = __LINE__; return; case __LINE__:
3.14159265 # 0 ⇈
Супер!
Тьфу, а я как лалка последняя со счётчиками пердолился.
3.14159265 # 0 ⇈
Ага, я понял. По сути отдельный function(){}. И чем ниже, тем вложенность больше.
А благодаря эти колобки просто линеаризует.
И мне вместо аргументов внутри колобка, просто возвращается значение из фьючерса, как из обычной функции.
Fike # 0 ⇈
в жабе всё так, там нет асинк-авейта, но есть CompletableFuture с возможностью указания, в каком пуле исполняться
3.14159265 # 0 ⇈
Т.к. в Няшной есть макросы и возможность прыгнуть switcheм в самую гущу цикла.
А в анскильных Жс, Жабах и Шарпах такую возможность убрали.
Можно конечно пердолиться замыканиями, но выйдет не сильно лучше колобков.
MAKAKA # 0 ⇈
Написать страничку, которая делает запрос к удаленному API, и отдает результат пользователю.
Запрос к удаленному API занимает 1 сек.
Если у твоего веб-сервера 10 потоков, и пришло 11 пользователей, то 11-й пользователь ждет осовбождения потока, хотя процессор ничем не занят: он тупо ждет, пока пакетики по сети летят.
Что делать программисту?
Использовать callback, но это лапша.
А хочется без лапши
Хочется писать последовательно, как если бы ты простой скрипт писал.
Вот async позволяет писать без лапши и просто.
3.14159265 # 0 ⇈
Да понятно. Вёб-поебень для жскрипт-лалок.
Смутно вспоминается баззворд «реактивное погромирование».
>Что делать программисту?
В «POSIX» есть мультиплексирование через select(). Именно поэтому я за «Сишку».
guest # 0 ⇈
Лалкам сложно так писать, куда проще писать все последовательно
Desktop # 0 ⇈
Пришло замыкание, оно целиком выполняется на следующем витке.
Desktop # 0 ⇈
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.iasyncst atemachine?redirectedfrom=MSDN&view=netc ore-3.1
bormand # 0 ⇈
guest # 0 ⇈
Но тебе придется использовать асинхронные API везде, и разведешь в итоге такую грязь, что читать будет туго, не?
>стейтмашина
Десктоп ссылк дал
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.iasyncstatemachine
IAsyncStateMachine Interface )
bormand # 0 ⇈
Ой, а как-будто на шарпе тебе не приходится использовать асинхронные апи везде и обмазывать каждое из них авейтом.
MAKAKA # 0 ⇈
3.14159265 # 0 ⇈
Не могу пока въехать как это просто сделать.
Для этого же надо иметь ГОМОИКОННОСТЬ, или интерпретировать кусок функции чтобы ссылаться на произвольное место кода.
bormand # 0 ⇈
3.14159265 # 0 ⇈
Примерно понятно.
Но как в сишке хранить «локальные переменные» без копрограммной магии? Разве что struct/массив c конь-текстом функции.
А можно демо-пример на Сишке.
bormand # 0 ⇈
bormand # 0 ⇈
gost # 0 ⇈
https://en.cppreference.com/w/cpp/language/coroutines
guest # 0 ⇈
если что-то где-то есть, то наверняка оно будет в крестах
3.14159265 # 0 ⇈
Стейт размещается на куче, но в случае тривиального случая компилятор может разместить его на стеке и даже заинлайнить.
bormand # 0 ⇈
3.14159265 # 0 ⇈
Если сделали в Крестах, тогда всё понятно.
Впрочем я серьёзно, они очень хорошо описывают как оно под устроено капотом: and the data that is required to resume execution is stored separately from the stack
coroutine state is allocated on the heap via non-array operator new.
bormand # 0 ⇈
Да и в шарповской доке, имхо, норм описано что делает await.
Fike # 0 ⇈
советская
gost # 0 ⇈
Почему я, глядя на этот вызов, чётко вижу многочисленные вызовы GetMessage()/TranslateMessage()/DispatchMessage()? Я ебанутый?
bormand # 0 ⇈
MAKAKA # 0 ⇈
guest # 0 ⇈
Внешние месседжи это только часть работы этого лупа, есть еще внутренние события, типа "я кнопочка такая-то, хочу перерисоваться, потому что я мультик, и перерисвываюсь 60 раз в секунду"
3.14159265 # 0 ⇈
Оно родненькое! Просто сахарок высокоуровневый.
guest # 0
gost # 0 ⇈
MAKAKA # 0 ⇈
Кресты (2511)
Куча (1893)
Решеточка (1878)
Екмаговно (1839)
ЙАЖА (1449)
Няшная (981)
BeginEnd (627)
Лол (499)
Питух (477)
SQL Injeciton (410)
Ненужное (292)
[[NSЯбло alloc] init]; (202)
=()= (190)
event not found (173)
Яuбy (138)
Школоло (134)
xor eax, eax (122)
Таблы (41)
Ябло(Свежее) (26)
монада это просто моноид в категории эндофункторов (20)
Goвно (8)
Коко (5)
3.14159265 # 0 ⇈
ЙажаСцрипт?
>Лол (499)
>Ненужное (292)
Час поздний, не въехал.
Остальное — охуенно.
Edit: 1C я бы назвал «НачатьПрограмму» или «КонецПопытки»
guest # 0 ⇈
да
1C
AcitonScript
gost # 0 ⇈
3.14159265 # 0 ⇈
Просто Лол и Ненужное не говорят о том что внутри.
Остальные категории охуенно, просто чудовищно self-descriptive. Я даже СтерторШкололо допёр.
Janycz # 0 ⇈
3.14159265 # 0 ⇈
> FORTRAN
Что-то не слышал чтобы школоло на нём писало.
>Школоло ассоциируется с Pascal
Тараса застал?Впрочем он повзрослел и перешёл на Аду и Кресты.
Janycz # 0 ⇈
Да.
Хотя сейчас новое школоло немного на питон переходит.
>Что-то не слышал чтобы школоло на нём писало.
Ну школоло особо на нем и не писало, язык ученых был. Но в каком-то кружке по программирования могли на нем писать. В любом случае, в моем понимании FORTRAN ближе к школоло, чем VisualBasic.
Myxa # 0 ⇈
TOPT # 0 ⇈
bormand # 0 ⇈
3.14159265 # 0 ⇈
gost # 0 ⇈
А в крестах, помимо общеизвестного оператора «стремится» («while (x --> 0)») есть менее распространённый оператор «хуй»: . Означает дословно «хуй тебе, а не bitFlag в bitMap».
Myxa # 0 ⇈
https://graphics.stanford.edu/~seander/bithacks.html
MAKAKA # 0 ⇈
Спасибо
3.14159265 # 0 ⇈
Но какую извращённую фантазию нужно иметь, чтобы там хуй увидеть. Причём травмированный.
На мой вкус отрицание нужно приклеивать к флагу.
bitMap &= ~bitFlag;
Оно-то конечно красиво, с точки зрения «вызвать у читателя WTF».
x -=- a;
x +=+ 42;
guest # 0 ⇈
guest # 0 ⇈
Myxa # 0 ⇈
guest # 0 ⇈
Fike # 0 ⇈
Myxa # 0 ⇈
guest # 0 ⇈
Myxa # 0 ⇈
Myxa # 0 ⇈
Myxa # 0 ⇈
Myxa # 0 ⇈
Да, используется оператор «хуй».
https://ideone.com/m0Kgna
3.14159265 # 0 ⇈
x &= x-1
Если бит единственный (x является степенью двойки) получается 0.
Desktop # 0 ⇈
gost # 0 ⇈
Если число состоит ровно из одного включённого бита (> x является степенью двойки), после которого следуют n нулей, то после вычитания единицы мы получим число из n двоичных единиц (для проверки вычти столбиком), например, 0b1000 - 1 == 0b0111. После «&» мы, очевидно, всегда получим ноль. А вот если включённых бит в числе как минимум джва, то старший из этих двух бит после вычитания единицы не изменится, и мы получим ненулевой результат: 0b101000 - 1 == 0b100111,
.
Desktop # 0 ⇈
Myxa # 0 ⇈
guest # 0 ⇈
А вот goatse можно и не понять
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
Ну тогда живёт
DypHuu_niBEHb # 0 ⇈
Myxa # 0 ⇈
Если же его уговорить, что мне нужно именно «Яuбу», то он находит «хуз» и фильм «Cпаcaтeлu Яuбy».
gost # 0 ⇈
Fike # 0 ⇈
а с ваших комментариев так вообще проиграл
Fike # 0
какой бесконечный редирект )))
guest # 0
https://i.postimg.cc/8zSYz8Js/yandex.png
gost # 0 ⇈
MAKAKA # 0 ⇈
Myxa # 0 ⇈
gost # 0 ⇈
guest # 0 ⇈
на на на на на на
на на на на нна нана
Почем индий?
guest # 0
https://habr.com/ru/company/vdsina/blog/513004/
Fike # 0 ⇈
ответ: александр чистяков
3.14159265 # 0 ⇈
Только многовато про алкашечку.
> Нет, надо на свою голову организовывать никому ненужные попойки
> не скудны на фантазию и задвигают что-то типа: пришёл на собеседование – получи бутылку Джек Дэниелс
Гайд Хрюши: как схантить алкаша-синьора на вкусные настройки.
Desktop # 0 ⇈
А рекрутёров толковых реально мало, но что об этом стонать.
Desktop # 0 ⇈
- это пиздец и нахуй такой офис, таких коллег и таких hr'ов. Дядя с килобаксовой зряплатой жлобится нанять няню для своих огрызков, потому давайте будем их наблюдать прямо на рабочих местах, да ещё и вместе с каким-нибудь ебучим клоуном.
Fike # 0 ⇈
пхпшники
> ебучим клоуном.
питонист, который тщетно пытается перевести всех на 2.7
gost # 0 ⇈
питонист, который тщетно пытается перевести всех с 2.7
Desktop # 0 ⇈
Узкий участок дороги, при движении по которому водитель пользуется преимуществом по отношению к встречным транспортным средствам.
Эти два знака (2.6 и 2.7) существовать друг без друга не могут. Если с одной стороны узкого участка стоит знак 2.6, то с другой стороны обязательно стоит знак 2.7.
gost # 0 ⇈
Desktop # 0 ⇈
Fike # 0 ⇈
Desktop # 0 ⇈
Fike # 0 ⇈
gost # 0 ⇈
> проходить обследование у психиатра
Сразу негоден.
Desktop # 0 ⇈
Но разве он намного хуже того же js?
Myxa # 0 ⇈
gost # 0 ⇈
Fike # 0 ⇈
Desktop # 0 ⇈
Fike # 0 ⇈
Desktop # 0 ⇈
> вот именно, что два ответа, и оба неправильных
- вопрос Шрёдингера?
gost # 0 ⇈
guest # 0 ⇈
Fike # 0 ⇈
вообще еще не вечер, но перенеслось на следующую неделю, ох-ах. там, глядишь, и предоплату попросят оставить.
guest # 0 ⇈
Fike # 0 ⇈
мы на самом деле еще год назад познакомились через тндр. тогда не взлетело, сейчас просто чаёк попьем, поболтаем да посмотрим. там сложная история.
gost # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Desktop # 0 ⇈
И это пацан. А шо про тёлок говорить)
Fike # 0 ⇈
MAKAKA # 0 ⇈
Имхо, фарш обычно обратно не проворачивается
Fike # 0 ⇈
Fike # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Макака пиздабол
Fike # 0 ⇈
надо было мне как-то улететь из шереметьево, дело было около двадцатого сентября. год назад я уже улетал, проебал свой самолет, искал банкомат и занимал по телефону денег у друга, там тоже была охуительная история, поэтому в этот раз я заранее билет не покупал. еду я значит на самом первом аэрокспрессе, думаю, давай-ка высокими технологиями воспользуюсь. делаю жмяк, гугл флайтс, есть аэрофлот через два часа - зашибись, кликаю, попадаю на сайт аэрофлота, оплачиваю.
на почту приходит сообщение (напоминаю, происходит это на стыке второй и третьей декады сентября) - "Удачного полета шестого октября!"
Я значит им звоню на входе в терминал, нихуя не слышно, какие-то очереди, они говорят, да, поменяем, но нужно будет доплатить. Я говорю: ну е-мое, десять минут назад не ту кнопку нажал, ну что вы. Они говорят: а назовите ваш посадочный код.
Двадцать минут мы перебрасываемся "подождите секунду" и "M как море? нет, N как наутилус", после чего мне радостно сообщают - да, надо будет всё-таки доплатить.
Ладно, иду в кассу. Там тоже очередь и та же история: надо будет доплатить, говорят. Я говорю - ну окей, аэрофлот ебаный, там был рейс на пятьдесят минут позже, давайте его. Они там щелкают в кампуктере и говорят: знаете, пока мы пиздели, его раскупили. Ну ладно, давайте тогда третий.
Они говорят: надо доплатить.
Я говорю: да, я смирился уже, давайте уже закончим с этим.
Они говорят, нет, надо еще доплатить. Рейс-то уже дневной, стоит дороже )))
Fike # 0 ⇈
Бегу через все эти кордоны, обгоняю каких-то индусов (- Харри? - ДА, ПИЗДЕЦ КАК ХАРРИ!), роняю все, короче, успеваю к гейту за минуту до отлета.
У гейта сидят три с половиной инвалида и спрашивают: а какого хуя ты приперся? Наш самолет только через полчаса, а тут ничего и никого не было.
Я пиздую обратно к табло в другую сторону зала.
Пока я дремал, гейт поменяли. Иду к гейту - оказывается, сука, он ровно напротив гейта с тремя инвалидами. Но посадка уже минуту как закончилась, поэтому ебаный аэрофлот даже по громкой связи меня не позовет и не подождет.
Иду в ебаные кассы.
Мне говорят: надо доплатить.
Я говорю: да вы охуели там что ли?
Они говорят: нихуя не знаем, идите в оперативное реагирование. А я уже представляю себе, что оперативное реагирование - это такие кассирши в квадрате, которые не только меня нахуй пошлют, но еще и предоплату сдерут.
А они там хи-хи, ха-ха, даже не посмотрели, сунули новый посадочный талон и отпустили. Ну а я пошел прямо к гейту и дремал уже сука там, улетев чуть ли не на шесть часов позже желаемого.
bormand # 0 ⇈
guest # 0 ⇈
Кубернейтс-то обсудили?
Fike # 0 ⇈
сама встреча перенеслась на следующую неделю. но рад, что ты следишь за моими усехами!
guest # 0 ⇈
bormand # 0 ⇈
Есть конечно редкие проекты где и код аккуратный и тесты и т.п. Но в остальном - говнище редкостное. Даже популярные штуки типа того же вордпресса или джумлы.
А про типичные туториалы вообще молчу.
У жс с этим получше всё-таки.
MAKAKA # 0 ⇈
Всё это у пыха очень плохое. Глупые люди пишут глупые мануалы. Другие глупые люди учатся по глупым мануалам, и тоже становятся глупыми. Потом все вместе пишут глупые фреймворки. Работая с глупыми фреймворками люди получают глупый опыт, и начинают думать, что делать глупо это правильно.
То-есть дело не в том, что синтаксис кривой. Дело в эко-системе. Это трудно объяснить, если не попробовать самому
gost # 0 ⇈
Desktop # 0 ⇈
Когда язык не форсит писать адекватно хотя бы чуть-чуть, то и будет кулебяка.
Но JS производит на меня точно такое же впечатление.
лефтпады, лапша из колбеков и промисов, языки над языками.
Но фреймворки некоторые вроде ничё, да, подслащивают пилюлю
guest # 0 ⇈
Интересно было бы почитать исследование на эту тему.
Веб питушня в конце 90-х писала говно на Perl, но Perl не стал такой парашей. А пых стал. А Ruby (следующий язык после пыха, пришедший в веб во второй половине нулевых) опять не стал.
Почему именно пых?
Desktop # 0 ⇈
guest # 0 ⇈
Все эти BDD, Континиус деливери, DSL и configuration as code пришли из руби (то-есть они были и раньше, но рубисты начали их форсить в вебе активно)
Просто так случилось, что он стал языком одного фреймворка --рельс. А DHH косный шопиздец, и потому всё стухло.
Алсо, поднасрал твиттер, рассказавший всему миру о тормозах руби
Desktop # 0 ⇈
Например BDD нужен 10 бизнесам, а интернет-магазин 10000.
Бизнес пойдёт и выберет пых, потому шо проще
А сегодня ты можешь писать с такой же скоростью на Свифте, только у тебя есть статтипизация, легчайший интероп с сями безо всякого ffi и т.п., так зачем тебе руби
guest # 0 ⇈
Чеф и паппет были чуть ли не первыми хайли адоптд способами настроить окружение автоматически.
>сегодня
Сегодня -- да. А в 2006-м как-то с этим хуже было
Myxa # 0 ⇈
Именно поэтому я за «PHP».
MAKAKA # 0 ⇈
Кстати, из всей скриптопараши шустрее всего работает небось JS: там жжит же
Myxa # 0 ⇈
«Фейсбук» пытался ускориться, сначала компилировали «PHP» в «Си», потом изобрели «HHVM». Но каждый раз они упирались либо в оверхед из-за динамической типизации, либо в тормоза СУБД, что никаким житом не фиксится.
guest # 0 ⇈
А про базу согласен: типичное пыхоблдл не умеет (де)нормализовать базу до вменяемого уровня.
Там будут или джойны по лайку из семи таблиц, или еще говно какое-нить
guest # 0 ⇈
3.14159265 # 0 ⇈
Сначала Яибу стал на рельсы.
А вот потом уже стал ничем.
guest # 0 ⇈
Если бы не рельсы, то известность руби среди ширнармасс была бы примерно как у tcl
Myxa # 0 ⇈
MAKAKA # 0 ⇈
Офигительный совершенно Zope был в питоне (слишком хороший для вебговна).
Но именно рельсы сделали их популярными.
До фреймворков была такая параша -- CMS. Это когда кусок говна, тупых ограничеий и квадратных колес вместе слепили в комочек
Myxa # 0 ⇈
MAKAKA # 0 ⇈
Вот смотри, какой код
https://www.cyberforum.ru/1c-bitrix/thread2456898.html
Или вот (покрути направо, там сюрприз):
В этом же файле происходит отправка данных
Myxa # 0 ⇈
gost # 0 ⇈
MAKAKA # 0 ⇈
У каждого свой
guest # 0 ⇈
Вот такой программист написал
https://opt-99999999.ssl.1c-bitrix-cdn.ru/forum/avatar/222/2224a371732f261323770fa0097cdbda/P51225-233109.jpg
Ни за что не поверите, зачем он это на диск сохранил:
https://dev.1c-bitrix.ru/community/forums/forum6/topic133333/
guest # 0 ⇈
MAKAKA # 0 ⇈
Myxa # 0 ⇈
Так пирфоманс будет больше.
https://www.php.net/manual/ru/wrappers.php.php
Myxa # 0 ⇈
Хотя в «PHP» всё есть:
https://www.php.net/manual/ru/book.soap.php
Ржака в записи на диск ради подсчёта объёма из-за перегруженной strlen.
https://www.php.net/manual/ru/function.mb-strlen.php
Второй комментарий: «If you need length of string in bytes (strlen cannot be trusted anymore because of mbstring.func_overload) you should use <?php mb_strlen($string, '8bit'); ?>».
То есть макака даже не осилила открыть документацию по «PHP».
MAKAKA # 0 ⇈
Я не верю, что сборка XML домом будет твоим ботлнеком:)
Да, макака присоветовала, а другая макака поблагодарила. Потом еще кому-нить расскажет. Так вот и распостраняются бест практисес
Myxa # 0 ⇈
https://www.php.net/manual/en/mbstring.overload.php
После обновления «PHP» куча проектов сломается.
MAKAKA # 0 ⇈
Лучше сразу делать двубайтовую кодировку и не думать ни о чём
gost # 0 ⇈
Тогда придётся думать про
[!] Application was halted by an exception.
Debug-mode is off.
MAKAKA # 0 ⇈
Белый человек решает проблему в перле
Пыхобыдло решает проблему:
ахах
Desktop # 0 ⇈
guest # 0 ⇈
нужно читать из одного и писать в другой кусочками
bormand # 0 ⇈
В комменте десктопа жопа походу в том, что тебе надо передать соответствующие стримы в какие-то функции. Т.е. видимо кольцевой буфер нужен с джвумя интерфейсами, а его почему-то не завезли. Поэтому крутят через файл.
MAKAKA # 0 ⇈
Псевдокот
спутил инп и аутп, ну и похуй
Альсо, я в винде форкал так процессы с пайпами, и в своем потоке писал с одного пайпа в другой
bormand # 0 ⇈
guest # 0 ⇈
Просто создаешь пайпы, Запускаешь поток, который читает блоикующе из одного, и пишет в другой, и передаешь пайпы в функции
bormand # 0 ⇈
Запилить кольцевой буфер который оба интерфейса реализует да и всё. Пайпы нужны только если тебе прям хендлы операционки требуются.
MAKAKA # 0 ⇈
Мне было нужно запустить два процесса, и подменить им хендлы stdout и stdin
Desktop # 0 ⇈
https://forums.swift.org/t/circular-buffer/34534
Вся эта херня нужна была для попытки сделать парсинг json'а на стримах, но оказалась излишней, потому что
https://govnokod.ru/25705
bormand # 0 ⇈
Нинужно. Любой сишник запилит за пять минут.
Myxa # 0 ⇈
https://www.php.net/manual/en/function.mb-strlen.php
Функция mb_strlen появилась в «PHP 4.0.6». То есть даже не в пятёрке, а в четвёрке! Я напоминаю, что «PHP4» — это 2000-й год, это было 20 (двадцать) лет назад.
Макаки до сих пор продолжают использовать strlen и ждут, когда их творение распидорасит многобайтовыми символами.
А из «PHP3» случайно какие-нибудь «бест практисес» не сохранились?
guest # 0 ⇈
в перле, руби и пит0не можно
Myxa # 0 ⇈
Так можно с PHP4, т. е. уже 20 лет как.
Desktop # 0 ⇈
It may not be clear whether PHP actually supports utf-8, which is the current de facto standard character encoding for Web documents, which supports most human languages. The good news is: it does.
I wrote a test program which successfully reads in a utf-8 file (without BOM) and manipulates the characters using mb_substr, mb_strlen, and mb_strpos (mb_substr should normally be avoided, as it must always start its search at character position 0).
The results with a variety of Unicode test characters in utf-8 encoding, up to four bytes in length, were mostly correct, except that accent marks were always mistakenly treated as separate characters instead of being combined with the previous character; this problem can be worked around by programming, when necessary.
Похоже, с PHP лучше не быть ни в чём уверенным
Myxa # 0 ⇈
Так вот его беспокоит, что в «PHP» функция mb_strlen второй вариант посчитает за два символа. Его, видимо, ещё беспокоит, что залго будет посчитано за кучу символов.
Хотя на этот случай есть функция grapheme_strlen:
https://www.php.net/manual/ru/function.grapheme-strlen.php
Последняя не считает «combining symbols» за отдельные символы.
Конкретно в данном случае проблема не в «PHP», а в том, что некоторые не умеют работать с «Unicode».
guest # 0 ⇈
Функция 20 лет назад устарела, но пыхоссобщество продолжает ее рекомендовать и использовать
Stallman # 0 ⇈
В шаблонизаторе осталась хоть одна функция, поведение которой не зависит от ублюдочного рнр.іпі?
gost # 0 ⇈
bormand # 0 ⇈
А если попробуешь - то всё норм же. Простой язык, понятные мануалы, умные люди вокруг, удобные фреймворки.
Вот только люди со стороны почему-то все смеются и тычут пальцем. Но они идиоты, видимо. Не надо обращать на них внимания.
guest # 0 ⇈
bormand # 0 ⇈
Myxa # 0 ⇈
gost # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
Ему смешно, а нам Application halted by exception
Myxa # 0 ⇈
gost # 0 ⇈
MAKAKA # 0 ⇈
JSP имеет диалект JSPX, который позволяет делать well-formed XML документы, это мегакруто.
Минусы правда в том, что во-первых он прибит гвоздём к сервлетам (его нельзя запустить с командой строки) а во-вторых он не умеет эскейпить по умолчанию: надо эскейпить явно, иначе у тебя будет пользователь с именем "<b>", и привет
И наконец, можно писать на Java и не использовать JSP.
Писать на котлине конечно приятнее, чем на PHP, не говоря уже про дебаг, профилирование, и тестирование.
ASP (не .NET) это вомзожность запускать скрипты в IIS плюс пара ActiveX объектов для работы с бекендом. Так что это VBS, древний JScript и прочая хуйня, говно, и не нужно.
А вот в ASP.NET ты можешь писать на C#, что безусловно в миллион раз лучше пыха.
Поверх этого есть какой-то свой шаблонизатор, есть веб-формы, был mvc.net, еще хуйня какая-то..
bormand # 0 ⇈
Что мешает мне делать их на «PHP»? Пиши аккуратно и всё будет well-formed.
guest # 0 ⇈
Ты можешь запутаться, и случайно два раза закрыть таг.
JSPX это XML, так что он сразу ошибку кинет
3.14159265 # 0 ⇈
JSP хотя бы конпелируемый.
Проебал где-то, не скомпилилось.
Плюс там есть несколько разных технологий. Само JSP реализует привычный для ПХП-кодера паттерн «каша».
Однако с помощью jstl можно вполне нормально шаблонизировать.
guest # 0 ⇈
И хорошо, что оно компилируетс. плохо, что без Request не работает
3.14159265 # 0 ⇈
Да.
А люди так этого и не поняли. Впрочем в эпоху ангуляров он почти не нужен.
>ASP (не .NET) [...] это VBS, древний JScript и прочая хуйня, говно, и не нужно.
Да.
>А вот в ASP.NET ты можешь писать на C#, что безусловно в миллион раз лучше пыха.
Да.
3.14159265 # 0 ⇈
Опровергаю.
Лучше. И JSP, и ASP.NET.
Desktop # 0 ⇈
Fike # 0 ⇈
3.14159265 # 0 ⇈
gost # 0 ⇈
Desktop # 0 ⇈
Но я же уже не мииидл((
gost # 0 ⇈
В тимлиды подался?
Desktop # 0 ⇈
MAKAKA # 0 ⇈
В гугле даже собачек можно в офис приводить.
Но разумеется, там для всего этого отдельное помещение, и если ты не любишь детей и собак, то ты не обязан вообще даже знать об их существовании
Desktop # 0 ⇈
> в обеденный перерыв пообнимать свое дитя.
- и сиськой его покормить на виду у всех, потому что онажемать
guest # 0 ⇈
А что плохого?
gost # 0 ⇈
MAKAKA # 0 ⇈
Desktop # 0 ⇈
MAKAKA # 0 ⇈
Desktop # 0 ⇈
Myxa # 0 ⇈
Fike # 0
какая помощь друпалу )))
guest # 0 ⇈
Myxa # 0 ⇈
guest # 0
Иню таки сделал это: https://govnokod.xyz/
gost # 0 ⇈
> Школоло
Эх, а ведь в старые-добрые времена на нём были написаны чуть ли не все приложения с гуем…
DypHuu_niBEHb # 0 ⇈
У Mac OS того времени он вообще был системным языком и главным языком разработки. *
Ну а о роли Delphi в виндуос разработке на границе веков и говорить смешно. Достаточно вспомнить квип и тотал коммандер и бесконечные формошлепские клиенты ко всему, к чему только можно
*https://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop#Design
Pascal was Apple's original preferred language for Macintosh software development,[1] and MPW was initially released with only Pascal support
Myxa # 0 ⇈
guest # 0 ⇈
Логичный язык
gost # 0 ⇈
!
DypHuu_niBEHb # 0 ⇈
Myxa # 0 ⇈
guest # 0 ⇈
Myxa # 0 ⇈
Даже нелепое do{ }while(0) в сишных макросах появилось из-за опциональности операторных скобок.
DypHuu_niBEHb # 0 ⇈
как в tcl
3.14159265 # 0 ⇈
Так мало того. Экономии никакой.
Необязательные операторные скобки влекут за собой обязательные скобки на условии.
Если что в Goвне правильно сделали, так это обязательные {}
MAKAKA # 0 ⇈
print "A" if 1;
А вот
if (1) print "A";
не срботает
gost # 0 ⇈
А ещё я за «Python». Там нет никаких «скобок».
bormand # 0 ⇈
3.14159265 # 0 ⇈
Кмк, «Питух» может быть действительно неплохим учебным языком.
Пока условный Сёма его соберёт, глядишь выучит Сишку и системы сборки.
gost # 0 ⇈
А вообще в моём ВУЗе на соответствующих парах нас заставляли вменяемо форматировать код, и за нарушения строго карали. В принципе, тоже неплохой подход (хотя и не настолько… элегантный, как в путухе).
Desktop # 0 ⇈
guest # 0 ⇈
Отступаешь скока-то клеточек, и чертишь
Desktop # 0 ⇈
guest # 0 ⇈
Я за обучение юных пизд программистов на паскале. Он куда внятнее, там меньше волшебства, стат типизация, и никакой волшебной кучи.
3.14159265 # 0 ⇈
Общеобразовательный уровень средней школы или университет с профильной подготовкой.
С т.з. практики Питух человеку может пригодиться хотя бы в качестве калькулятора.
А у нас как обычно учат тому, что потом нахуй не нужно в жизни.
Если Тарас такое говорил, то я ему ещё как-то верил — он реально писал на Дельфях код.
А так научат детишек Паскалю, а они потом вырастут и в Экселях всё считают.
guest # 0 ⇈
Потому я за 1997-й год, когда вполне можно было на паскале работать настоящим программистом
bormand # 0 ⇈
Вот я кстати так и не научился. Обычно на середине расчёта забрасываю эту хуйню и делаю какой-нибудь питоний скрипт, который csv высирает или через api ячейки патчит.
XYPO3BO3 # 0 ⇈
Работать в «Экселе» напрямую для меня сложно. Я пытался, у меня даже получалось, но я быстро забываю, как это делать. Скилла не хватает.
guest # 0 ⇈
Excel вполне может быть гуйным интерфейсом к СУБД или OLAP. И еще графики тебе рисовать будет. И сортировать. И Pivot tables делать.
Полезная тула, на самом деле
XYPO3BO3 # 0 ⇈
3.14159265 # 0 ⇈
Этот багор у меня случился ещё в 90х.
Я его на всю жизнь запомнил.
Русификация — зло. Они БЛЯТЬ даже функции попереводили.
Myxa # 0 ⇈
Там ещё зло, что в разных версиях «Офиса» имена функций могут немного не совпадать.
guest # 0 ⇈
В ячейке есть формула. Формула ссылкается на ячейку (типа A1) или range (A1:A10).
Чтобы при копировании ячейки не менялась формула, исползуют доллар.
"A$1" -- не менять 1 при копировании
$A1 -- не менять A.
Все форумулы хорошо документированы обычно.
Есть сумма, есть среднее арифм, есть даже представить ввиде hex:)
А еще можно скопировать ячейку, выделить кусок, и вставить. И кусок заполнятся ячейками с формулами, которые правильно изменились (если конечно нет $)
bormand # 0 ⇈
Да любой мало-мальски сложный расчёт в экселе - это какой-то ёбаный ад с вспомогательными ячейками и копипастой. Я даже не хочу тратить время на изучение этой хуйни и попытки натянуть сову на глобус.
Простенький график нарисовать или сумму посчитать - ну ок, сойдёт. Остальное проще внешними тулами.
З.Ы. И не предлагай мне встроенные языки.
guest # 0 ⇈
Туда вроде завезли .NET, но я особо не пользовался.
А вот на VBA я писал в детстве. Какой багор:)
bormand # 0 ⇈
Ну я в библиотеках .net не особо шарю, без msdn писать не смогу. А смысла их учить ради сраных табличек и, возможно, плагинов к повершеллу я особо не вижу.
guest # 0 ⇈
А вот VBA точно нет
**WPF какой-нить, всё проще, чем MFC с крестами
bormand # 0 ⇈
guest # 0 ⇈
Я согласен про многословность, но (имхо) .NET дает неплохую середину между скриптушней (где у тебя не будет доступа к API винды) и сишечкой/крестами, где будет много не очень нужного лоулевела.
Альсо, дотнет есть у всех, а скриптушню ставить надо.
Впрочем, если ты такой бог крестов, то тебе может дотнет и нахуй не нужен.
gost # 0 ⇈
Будет же: https://pypi.org/project/pywin32/.
UPD: Дока: http://timgolden.me.uk/pywin32-docs/.
Myxa # 0 ⇈
guest # 0 ⇈
Myxa # 0 ⇈
https://govnokod.ru/13763#comment195630
Собственно после его комментария я и начал копать в этом направлении.
guest # 0 ⇈
Проблемы начинаются тогда, когда к фукции пррилагается .h файл с неебической стуктурой, и ее вроде бы надо в питоне выразить, но верояно есть готовые тулы
bormand # 0 ⇈
guest # 0 ⇈
А если там 934 поля?
bormand # 0 ⇈
Мож и есть какая-то тулза на clang'овском двигле которая может хедер в питон сконвертить. Но не факт.
guest # 0 ⇈
Как было бы клево, если бы API описывалось в языконезависимом стиле, правда с типами была бы чехорда
bormand # 0 ⇈
guest # 0 ⇈
Myxa # 0 ⇈
guest # 0 ⇈
http://timgolden.me.uk/pywin32-docs/PyCWinThread.html
>Encapsulates an MFC CWinThread class
Казалось бы, причем тут MFC?
И я же правильно понимаю, что они напитонили обертки вокруг части API? А если там чего-то нет?
В C#.NET же у тебя есть P/Invoke, позволяющий нашарпить такие обертки для любой функции
Впрочем я доебываюсь конечно: в реальной жизни такое надо чуть реже, чем никогда.
Зато в C# типизация статическая, лол
bormand # 0 ⇈
3.14159265 # 0 ⇈
У меня нет.
А вся скриптушня стоит из коробки.
К тому же дотнет без студии — хуйня.
MAKAKA # 0 ⇈
Имелся ввиду рантайм: Он обычно есть в винде.
Кстати, без студии можно писать еще и в райдере, но он платный, а по тяжести может со студией поспорить
3.14159265 # 0 ⇈
Так у борманда тоже )))
А в целом пока одни квалифицированные коллеги высирают статы из логов в Ыксель, и потом там пирдолятся с формулами.
Другие пишут какие-то парсеры для питонов, мне зачастую проще прям на серваке хуйнуть grep | cut | awk | sort и высчитать всё что нужно.
То же касается многих тривиальных csv.
guest # 0 ⇈
https://docs.microsoft.com/en-us/previous-versions/office/troubleshoot/office-developer/automate-excel-using-visual-c-fill-data
Кстати, там же ActiveX
Можешь из под питона под винду тоже саме
3.14159265 # 0 ⇈
Я тоже. Правда в детстве у меня VBA не было, только клон Спектрума.
Но я считал какую-то побитовую питушню, конечный автомат для курсовой по дискретной математике.
Её предлагалось считать руками на бумажке, лол.
И как раз тогда только появился VBA. Функций экселя я не знал, гуглов тогда не было.
Написал все нужные функции на VBA, посчитал всё, распечатал аккуратную табличку.
3.14159265 # 0 ⇈
Какой анскилл )))
> делаю какой-нибудь питоний скрипт, который csv высирает или через api ячейки патчит.
Какой скилл )))
3.14159265 # 0 ⇈
Вообще мой мир рухнул.
Приходит борманд на собеседование в контору с Экселем, а дальше картина описанная гостем:
https://govnokod.ru/25444#comment463938
В итоге эксельная девочка-хрюша разъебует в хламину кандидата, который способен решить задачу на десятках языков, сотней способов, включая самые экзотические и изощрённые, вроде сишного препроцессора, constexprов, тьюринг-полного sedа, хачкеля, и остальных.
Desktop # 0 ⇈
Go
Достаточно простые для освоения. Статическая тупизация.
Не требуется ооп головного мозга в обязательном порядке.
guest # 0 ⇈
Swift вроде как не очень популярен за пределами яблока, не?
Или он уже есть под винд?
Desktop # 0 ⇈
guest # 0 ⇈
**если они будущие программисты
Desktop # 0 ⇈
Если препод не совсем жопорук, то поможет.
Ну а тем, кто до сих пор пользуется XP, можно посоветовать виртуалку.
XYPO3BO3 # 0 ⇈
Вот, например, «gcc» пропагандирует «Objective-C», суёт его во все операционные системы (в «MinGW», например, он есть). Но кто на нём реально пишет?
guest # 0 ⇈
У них там всё свое?
XYPO3BO3 # 0 ⇈
XYPO3BO3 # 0 ⇈
http://gnustep.org/
Myxa # 0 ⇈
Desktop # 0 ⇈
Ну тогда вам на php
XYPO3BO3 # 0 ⇈
В «Паскале» принцип: «посрал — убери за собой». Ручная расстановка освобождения памяти тренирует внимание.
В «Delphi», правда, появились строки со счётчиком ссылок.
guest # 0 ⇈
У меня есть ощущение, что понимание работы с памятью (где стек, где куча, что копируется, а где ссылка передается) это вообще мегаважно, и совсем не просто на самом деле для ребенка.
И вот питон позволяет всего этого не знать. А лучше бы это понимать
XYPO3BO3 # 0 ⇈
guest # 0 ⇈
Когда ты нуб, тебе нужно как можно меньше понятий.
Вот такое тебе легко изучить
А пойди пойми
Сразу столько непонятных слов, и ведь их хер объяснишь студенту. Что такое "static"? Что такое "class"? Ему бы hello world написать сначала
XYPO3BO3 # 0 ⇈
guest # 0 ⇈
Что такое "<?". Объясни новичку. Зачем оно?
XYPO3BO3 # 0 ⇈
guest # 0 ⇈
Что такое "шаблонизатор"?
Что такое "фреймворки"?
gost # 0 ⇈
Подтверждаю. Ещё нужно объяснять, зачем в каждой строчке стоят доллары и собачки.
3.14159265 # 0 ⇈
Чтобы зарабатывать доллары и завести себе собачку.
3.14159265 # 0 ⇈
Правильно решил.
За то мне «Basic» с «Ada» и нравятся. И ещё «Dylan».
3.14159265 # 0 ⇈
В Дилане пошли ещё дальше. Сделали возможность указывать какой именно блок оканчивается.
При этом всё кроме End опционально.
Таким образом на простых блоках пишется End.
Зато на большой вложенности, или очень длинных методах, чтобы не запутаться можно писать полностью.
MAKAKA # 0 ⇈
Имхо, скобочки с отступами отлично решают эту проблему, особенно когда vim их подсвечивапет, и прыгает по ним по проценту.
Правда, бывают блоки на три экрана конечно, там у закрыскобки можно и комментнуть
bormand # 0 ⇈
MAKAKA # 0 ⇈
3.14159265 # 0 ⇈
XYPO3BO3 # 0 ⇈
За пределами шоблонов страниц такой синтаксис почти не встречается.
guest # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
Вербозное неудобное говно на самом деле.
Desktop # 0 ⇈
guest # 0 ⇈
Классно!
Myxa # 0 ⇈
DypHuu_niBEHb # 0 ⇈
admin # 0 ⇈
gost # 0 ⇈
Myxa # 0 ⇈
admin # 0 ⇈
Myxa # 0 ⇈
guest # 0 ⇈
Myxa # 0 ⇈
Есть путаница в нотациях: немцы ноту «си» обозначают как «H», а буква «B» у них обозначает «си-бемоль», а вот у англичан буква «B» обозначает просто «си». Связано это, вероятно, с тем, что в средневековых музыкальных инструментах когда-то не было ноты «си», а «си-бемоль» была.
Если что, «бемоль» означает понижение на полтона (обозначается значком, похожим на мягкий знак), а диез — повышение на полтона (обозначается значком, похожим на решётку).
Т. е. ряд «до-ре-ми-фа-соль-ля-си» немцы записывают как «CDEFGAH», а англичане — как «CDEFGAB». Почему буква «A» означает ноту «ля», я не знаю.
У итальянцев нет однобуквенных сокращений, они пишут: «do-re-mi-fa-sol-la-si».
admin # 0 ⇈
DypHuu_niBEHb # 0 ⇈
bormand # 0 ⇈
defecate-plusplus # 0 ⇈
XYPO3BO3 # 0 ⇈
А в других местах, да, цифры обозначают интервалы или аккорды.
bormand # 0 ⇈
Взять тот же басовый ключ, где весь маппинг съехал. Ну сдвиньте его блять на одну линейку вверх, Си малой октавы всё равно нормально читаться будет. Нет, будем учить 2 отдельных маппинга.
guest # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
А ты пианино тыкаешь.
Тьфу на тебя!
guest # 0 ⇈
Выключи комплюктер, дай ему отдохнуть
XYPO3BO3 # 0 ⇈
bormand # 0 ⇈
Myxa # 0 ⇈
guest # 0 ⇈
https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Hillclavichord.jpg/1200px-Hillclavichord.jpg
Myxa # 0 ⇈
Почему у клавикордов такая инверсия раскраски, не знаю.
Myxa # 0 ⇈
guest # 0 ⇈
Как я понял, их бывает два типа:
1. С диатоническим рядом (чёрные клавиши тупо удалили). Играть на них пиздец как сложно, потому что трудно найти ноту «до», а если сместиться по такому ряду, то тона и полутона не будут совпадать.
2. С хроматическим рядом (чёрные увеличили до размера белых и перекрасили в белый). Тут если собьёшься, мелодия не испортится, просто транспонируется вверх или вниз.
guest # 0 ⇈
https://www.youtube.com/watch?v=HUpggXGHYjk
defecate-plusplus # 0 ⇈
полагаю, басовый ключ наиболее точно удовлетворял настройке какой-нить виолончели
для левой руки ф-но/клавесина он просто используется, скорее, "потому что уже был такой, нах ещё один изобретать"
как и для правой руки - дык это для скрипки родной, "че вы тут пальцебляди лезете в наш уютный смычковый мирок"
defecate-plusplus # 0 ⇈
ещё немаловажный факт, что ранние клавесинные произведения это обычно для богемного, комнатного потребления
и всякие композиторы, которые пионерили музыку, скорее писали для оркестров (потому что только за это и платилось бабло на госзаказе)
и сидишь ты такой дома при лучине, сочиняешь под сдачу к сроку, записываешь партии на оркестр из скрипки, виолончели, духовые - тебе как раз не дохера надо потом ремап делать из "левой руки" в понятный смычкобляди листинг, ты сразу записываешь как надо
да и ксероксов не особо было в то время
Myxa # 0 ⇈
Скрипачи пердолятся, чтобы подогнать высоту своих звуков под другие инструменты, или неточность звучания маскируется эффектом вибрато?
bormand # 0 ⇈
Но я сварщик не настоящий, могу ошибаться.
Fike # 0 ⇈
guest # 0 ⇈
хуесинные
DypHuu_niBEHb # 0 ⇈
Вот тебе за это мульт https://www.youtube.com/watch?v=g9Xz2Ta_LDs
Myxa # 0 ⇈
Какой багор )))
guest # 0 ⇈
gost # 0 ⇈
TOPT # 0 ⇈
gost # 0 ⇈
TOPT # 0 ⇈
gost # 0 ⇈
TOPT # 0 ⇈
guest # 0 ⇈
У нас в офисе была пицца, но в офис нас не пускают(((
TOPT # 0 ⇈
Desktop # 0 ⇈
TOPT # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
MAKAKA # 0 ⇈
ого
guest # 0 ⇈
Desktop # 0 ⇈
Fike # 0 ⇈
ну и плюс ля первой октавы = 440 гц, настройка всегда относительно нее ведется
bormand # 0 ⇈
Относительные интервалы соблюдаются - уже норм. Абсолютную высоту большинство людей всё равно не воспринимает, плюс-минус несколько тонов не заметят.
Fike # 0 ⇈
admin # 0 ⇈
guest # 0 ⇈
admin # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Fike # 0 ⇈
DypHuu_niBEHb # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Desktop # 0 ⇈
Fike # 0 ⇈
Desktop # 0 ⇈
Поправьте, если пизжу
Fike # 0 ⇈
Myxa # 0 ⇈
Desktop # 0 ⇈
Fike # 0 ⇈
defecate-plusplus # 0 ⇈
Fike # 0 ⇈
Desktop # 0 ⇈
Fike # 0 ⇈
Desktop # 0 ⇈
Desktop # 0 ⇈
https://www.quora.com/Why-is-it-C-D-E-F-G-A-B-in-music-and-not-A-B-C-D-E-F-G
Я начинаю понимать, почему крестовики вроде Романа ещё и по сольфеджио всякому угорают. Это такая комплексная сублимация
guest # 0 ⇈
XYPO3BO3 # 0 ⇈
gost # 0 ⇈
То обсуждение не нашёл, только два других из разных эпох: https://govnokod.ru/6055#comment79214, https://govnokod.ru/16219#comment237953.
DypHuu_niBEHb # 0 ⇈
Надо бы каллиграфа вызвать, он охуенный
Desktop # 0 ⇈
guest # 0 ⇈
Довольно милое время. Населено было абсолютами, калиграфами и прочими неплохими крестовичками.
Вторая ссылка это уже стерторщина конечно, катастрофа старого говнокода
Desktop # 0 ⇈
guest # 0 ⇈
Desktop # 0 ⇈
guest # 0
https://www.anticoantico.com/ru/items/209164/-?cat=OB
Desktop # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Myxa # 0 ⇈
[Sono d'accordo]
[Non sono d'accordo]
[Leggi di più]
Ну и какой из вариантов мне выбирать?
Myxa # 0 ⇈
gost # 0 ⇈
Myxa # 0 ⇈
gost # 0 ⇈
Myxa # 0 ⇈
Хочу такое. Выделяешь на каком-нибудь сайте фрагмент текста на любом языке программирования, и получается нямка.
guest # 0 ⇈
Сука, самое бесполезное изобретение в мире, даже фонарик на солнечных батареях полезнее
Fike # 0 ⇈
MAKAKA # 0
всё
пизда
уйду в курьеры
никогда не хотел удаленной работы, и вот тебе бляд
defecate-plusplus # 0 ⇈
вот ждём результатов своих мазков теперь
если дома нет маленьких детей, то че бы и дома не посидеть
guest # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
Desktop # 0
Я, говорит, могу тебе перенести адресную строку в нижнюю часть экрана, а то вдруг ты соскучился по временам интернет эксплорера на виндофоне.
А ещё удалил ВСЁ, включая куки, настройки, дополнения и даже кастомные поисковые движки.
Зато адресная строка в нужном месте блять
3.14159265 # 0 ⇈
Ух ты. Похоже не один я такой упоротый, чтобы ставить Гiгетох на телефон.
>А ещё удалил ВСЁ, включая куки, настройки, дополнения и даже кастомные поисковые движки.
Именно поэтому я против «автообновлений».
Desktop # 0 ⇈
> не один я такой упоротый, чтобы ставить Гiгетох на телефон
- я не вижу альтернатив. Но лиса не радует в последнее время. На ноуте ушёл на esr, потому что последние версии почему-то начали произвольно сбрасывать зум страниц до 100%.
defecate-plusplus # 0 ⇈
https://github.com/kiwibrowser
правда он как-то перестал развиваться, надеюсь, не навсегда
Desktop # 0 ⇈
- ну то есть альтернатива лисе это только хромиум различной степени зондированности.
3.14159265 # 0 ⇈
А какие есть зонды в опенсорсных сборках?
Ну допустим гугловый DNS. Ну предположим проверка у гугла вредоносных сайтов. Это и ФФ делает по дефолту. Хз отключается ли оно в хроме.
И дефолтный гугл-поиск — вовсе мелочь.
Desktop # 0 ⇈
Тут дело даже не в зондах, а в том, что один движок заполонил практически всё.
Сегодня выбирать вообще не из чего.
Хочешь браузер? Ну вот тебе хромиум/хром или полумёртвый фф.
Хочешь мобильник? Пожалуйста, один форм-фактор и аж две операционки, обе достаточно говняные.
Застой какой-то.
3.14159265 # 0 ⇈
Запустил wireshark браузишь, и попутно смотришь на какие хосты оно ходит.
Можно даже не браузить, а наблюдать за сетевой активностью ОС и браузера.
Много познавательного
>Хочешь браузер? Ну вот тебе хромиум/хром или полумёртвый фф.
Это на самом деле неплохой выбор.
Интернет другой к сожалению выбрать нельзя. Кругом тормозные говносайты с кучей перделок, рекламы, трекеров, майнеров и просто питушни.
guest # 0 ⇈
Desktop # 0 ⇈
На тебе скальп Чубакки: https://cdn.trinixy.ru/pics4/20100901/rare_star_wars_photos_40.jpg
Fike # 0 ⇈
https://www.costumepartyworld.com/media/catalog/product/cache/1/image/650x/040ec09b1e35df139433887a97daa66f/h/l/hlw-mask-detectpika_3_.jpg
https://ae01.alicdn.com/kf/HTB1SwaUcL1H3KVjSZFBq6zSMXXaR.jpg
https://ae01.alicdn.com/kf/HTB1lwZ8auySBuNjy1zdq6xPxFXai/BomHCS-New-Handmade-Funny-Animal-Cap-Novelty-Pikachu-Hats-Gag-Party-Masks-Beanies-Halloween-Birthday-Cool.jpg
https://sleezybarbhorsewear.com/wp-content/uploads/2016/09/sleezy-face-mask-pikachu.jpg
gostinho # 0
https://govnokod.ru/26832 https://govnokod.xyz/_26832
Desktop # 0 ⇈