- 1
- 2
- 3
- 4
- 5
#include "server.h"
const server::CServer s(8085, 1111);
int main() {return 0;}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+125
#include "server.h"
const server::CServer s(8085, 1111);
int main() {return 0;}
http://habrahabr.ru/post/213301/
От автора http://govnokod.ru/14526
>И еще на мой взгляд, функция main() — атавизм, доставшийся программистам от СИ. В С++ она лишняя. Но компиляторы пока этого не знают к сожалению.
>Но я решил «наказать» эту ненужную функцию, отобрав у нее возможность что-либо сделать — изменил файл serv.cpp следующим образом
Windows в принципе ужасен, но кого это ебет?.
помогут избежать ошибки «Address already in use» при аварийном перезапуске сервера — жестоко ошибаются. Не помогут.
Почему?
> при аварийном перезапуске сервера
перезапуск сервера --- задача не атомарная, так-то
Пидоттеринг кажется решает такое: там порт слушает systemd, и пепредает его прцоессу. Системд порт не теряет.
Вот пидоттеринг молодец!
Ой, я перепутал, `inetd` умел это делать, когда поцтеринг еще у папке в яйцах сидел, и в линукс не срал. Или я не прав?
Я номера портов в конфигах зашиваю и знаю что на каком порту поднято.
Исключение — тесты. Потому что тестов много может параллельно идти.
Чувак кильнул твой процесс, и пока он валяется -- запустил другой на том же самом порту.
Менять порт динамически это пидорство, конечно. RPC в винде так делает (rpc mapper) и еще некоторые другие ОЧЕ СТАРЫЕ питухи, за что их ненавидят админки, и настраиватели файрволлов: тридцать пять лет назад это считалось ок.
Ну это пидорство, конечно. Потому на моих серверах такой хуйни нет.
Я стараюсь левым хакерам всё таки терминальный доступ на свои продакшен сервера не давать
С одной стороны у них "By default, RPC uses ports in the ephemeral port range (1024-5000)", а с другой http.sys в ядре слушает порт 443 и шарит подключение между процессами.
Ну не говноеёбы-ли?
Линкуешь с другой библиотекой, и у тебя вместо main() при старте вызовется что-нибудь ещё.
http://www.hexblog.com/?p=9
Есть «multitasker» в «DR-DOS», но он изолирует программы друг от друга, а запуск всегда происходит с точки входа.
По идее треды должны существовать в «Concurrent DOS» и в «European MS-DOS», но эти системы не получили распространения.
Передай тем, кто тебя плюсует, что возможно они даже в глаза не видели VB 1.0, а я видел. Я кодил под дос (разумеется, лишь в целях расширения кругозора, ибо бейсик мне нахуй не всрался). Там УЖЕ пахло зачатками винды, но как говорится, "хочу да не могу".
И в MDI (multiple document interface) в «Windows» ты также не можешь пользоваться дочерними окнами приложения, пока не закроешь модальное. Все окна в «VB for DOS» и в «Turbo Vision» –— это по сути MDI: окошек много, а приложение одно.
Если нужно немодальное окно, то нужно отказаться от MessageBox и лепить своё окошко. Так задумано.
А то погромисты обколются своей марихуаной и открывают модальные окна на каждый чих, а у меня из-за них комп висит.
p.s. виндявый мессагебокс далеко не модальный (если намеренно не поебаться с флагами). Модальный он только в досе, ибо там псевдоокна и нет ни з-порядка.
Я уже выше написа́л: «VB for DOS» и «Turbo Vision» создают не графическую операционную систему a la Windows, а одно приложение с подобием MDI (multiple document interface), поэтому MessageBox блокирует взаимодействие пользователя со всеми окнами. Так задумано.
Если не хочешь блокировать, открывай не MessageBox, а специальное окно.
Я вёл речь токмо о visual basic for dos. О том, как убого выглядело псевдоокно созданное msgbox.
кстати. судя по упоминанию большого количества ячневой крупы в моей черепной коробке, гуест8-у невдомёк, что msgbox - обычное виндоклассное окно, которое может не иметь владельца.
Точно не помню, как было у «VB for DOS» (я его буквально пару раз запускал), но у «Турбовижен» окна были разные, их можно было двигать независимо, можно было назначать владельца (чтобы при закрытии этого окна захлопывались дочерние), можно было создавать модальные диалоги и немодальные.
Напоминает такую цепочку: «Я не смог поставить Django на Windows => прыщи — говно».
Почти готовый макрос: «Я не смог %SUBJ% в %OSNAME% => %другой_SUBJ% — говно».
В винде он тоже модальный, просто ты первым параметром NULL передаёшь, а надо — HWND твоего окна. Кури MSDN: https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-messageboxw .
Кэп?
С флагами ебаться не надо; модальный он не только в досе.
Будет ли он модальным, если приложение не имеет главного окна?
С флагами не ебёмся - сам сказал. Последний параметр ==0.
Если приложение не имеет главного окна — какую именно работу с приложением должно заблокировать модальное?
Можно ебануться, в принципе:
До тех пор, пока диалоговое не будет закрыто, ввести в появившееся чёрное окно ничего будет нельзя, работа пользователя с родительским приложением успешно заблокирована, в флагах — 0, да даже родительское окно не задано.
Я лишь хотел показать, что утверждение "messagebox - модальное окно" не всегда верно.
@Если нет окна -- некому и событие посылать.
Я просто оставлю это здесь.
BOOL GetMessage(
LPMSG lpMsg,
HWND hWnd,
UINT wMsgFilterMin,
UINT wMsgFilterMax
);
Parameters
lpMsg
Type: LPMSG
A pointer to an MSG structure that receives message information from the thread's message queue.
hWnd
Type: HWND
A handle to the window whose messages are to be retrieved. The window must belong to the current thread.
If hWnd is NULL, GetMessage retrieves messages for any window that belongs to the current thread, and any messages on the current thread's message queue whose hwnd value is NULL (see the MSG structure). Therefore if hWnd is NULL, both window messages and thread messages are processed.
Хех, там далеко не все сообщения видно. Некоторые системные бродкасты только в оконной процедуре ловятся... Т.е. они вообще из нихуя рождаются во время DispatchMessage(). Кругом костыли.
Type: BOOL
If the function retrieves a message other than WM_QUIT, the return value is nonzero.
If the function retrieves the WM_QUIT message, the return value is zero.
If there is an error, the return value is -1.
NULL'у кинь.
PostMessage(NULL, ...) аля PostThreadMessage(GetCurrentThreadId(), ...).
Подставь айдишку треда.
А могут быть. А мог через GetWindowThreadProcessId() узнать. А мог по другим каналам получить от самого процесса...
Возможность передачи сообщения именно в message loop треда, а не окну есть. Ты же не будешь спорить с MSDN?
З.Ы. Нахуй это нужно - х.з. Скорее всего, тупо чтобы общаться со своими тредами, в которых уже крутится message loop.
Я уже не помню.
А из ануса таким же макаром?
Вот только некоторые события без окна хуй получишь... Вот и приходится создавать невидимые окна.
http://govnokod.ru/14760#comment465725
Ты же делфист, почему двойное равно?
Если ты внимательно посмотришь справку, то поймёшь, что этот флаг идёт по умолчанию.
MB_APPLMODAL
0x00000000L
The user must respond to the message box before continuing work in the window identified by the hWnd parameter. However, the user can move to the windows of other threads and work in those windows.
Depending on the hierarchy of windows in the application, the user may be able to move to other windows within the thread. All child windows of the parent of the message box are automatically disabled, but pop-up windows are not.
если ты тупо укажешь ноль, это и будет апплмодал.
Если у тебя ещё не выросла пипирка, это не значит, что так было и у других.
Ну не знаю, может быть, какой-нибудь цыган откликнется.
Португальцы едят паштель и любуются на азулежу (то ли ж, то ли ш тут) из города Оливейра-ди-Аземейш
https://youtu.be/hfeCx_CYLuU
иногда это чувствуется)
В интернете можно найти скан «молдавско-румынского словаря» (автор Василе Стати). Там автор нарочно собрал в молдавской колонке славянизмы, а в румынской — романизмы. Например, kuzneţ — fierar.
Кстати, в республике Молдова официальный язык румынский
Угадай, где молдавский
Молдавский в 1930-х перевели «обратно» на кириллицу. Это была не та румынская кириллица, а уже новая, без ятей.
В «Google Books» есть реальные примеры книг на дореволюционной кириллице.
Потому у некоторых народов в итоге по два алфавита
У Ленина хватило смелости сказать Луначарскому, что русский переводить на латиницу не нужно.
А латинизация других народов тогда прокатила, потому что они были либо вообще бесписьменными, либо использовали арабское письмо, которое им подходило ещё хуже, чем латиница.
Армянский и грузинский не трогали, у них к этому моменту уже было удобное письмо.
то на латиницу, то на кириллицу
то русификация, то предпочтение национальным языкам
и это в стране, где за первые 75 лет было три с половиной руководителя
реально русское поле экспериментов
Сторонники латинизации считают, что латинский алфавит — самый универсальный. Посмотрим... Вот, например, как в «универсальном» алфавите обозначают звук «ш»:
• «sh» в английском;
• «ch» во французском (у англичан и у испанцев то же «ch» означает «ч», а у итальянцев — это просто «к», а буква «h» служит для разделения с гласной, чтобы не спутать с «c» в роли «ч», удобно, да?);
• «sch» в немецком;
• «sz» в польском (а вот «ш» мягкое поляки обозначают как «ś»);
• «s» в венгерском (а звук «с» венгры обозначают как «sz», то есть ровно наоборот по сравнению с польским);
• «š» в чешском;
• «ş» в турецком (ладно, будем считать это деталью реализации);
• «x» в баскском.
Вообще «x», «j» и «c» — самые невезучие буквы, потому что у них в разных языках разные значения.
Универсальный алфавит, да?
я бы сказал, что с латиницей упростилась бы унификация возможно
но какого-то особого смысла не вижу: не так далеко кириллица ушла от латиницы, чтобы для нас было проблемой воспринимать и то, и то
Так что добавь в свой список "sj"
слово "феррум" слышу я во втором слове.
У Трофима дворник-таджик на языке Хаяма материл февраль. А строитель-молдаванин ругается на языке Цицерона, лол
Ломовая латынь молдаван.
в C# стало можно писать без мейна, но там какие-то ебананаские ограничения, типа структуры нельзя объявлять после строчек кода (как в паскале и старых сях хахах)
compiler returns an error (any error), the source file
gets deleted.
The compiler however, returns me to the "Prelude>"
cursor and still accepts commands
Но что значит "m_"? Долбоёб реально все поля предворяет буквой "m"? Чтобы не писать `this->`?
В джавке понятно - camelCase поля и переменные, PascalCase типы, НАОРУ_ТЕБЕ_В_УШИ константы и енамы. Вот по-настоящему хорошо в шарпе, где только PascalCase (в т.ч. для методов - надо вовремя сообразить, что ты смотришь на установку делегата, а не значения) и для остального camelCase
А змея это пидорство кстати. Горизонтальное место стоит дорого. Змею придумали 50 лет назад, когда отличать заглавные от строчных было нельзя (капитель или как там оно называется) а сейчас нахуя проебывать место?
Мудило. Есть ещё mb_
Это удобно
https://www.youtube.com/watch?v=hSZas_VMLpw
https://pbs.twimg.com/media/GJkwALZWEAAQ9ro?format=jpg&name=medium
Joeri Aleksejevitsj Gagarin
Аусвайсс хоть выдали?
https://cdn-images.the-express.com/img/dynamic/10/1200x675/152695.jpg