- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
// Lock the write mutex, to provide consistency of data
#define LOCK \
if (_ugb) { \
if (pthread_mutex_lock(&_write_mutex) == EINVAL) \
ASSERT(0); \
}
// Unlock write mutex when data sent
#define UNLOCK \
if (_ugb) { \
if (pthread_mutex_unlock(&_write_mutex) == EINVAL) \
ASSERT(0); \
}
// Пример использования
void socket::add_var(uint16_t code, const void *buffer, uint32_t length)
{
LOCK
try
{
DEBUG_I(Vblock, "Sending code 0x%X of size 0x%X\n", code, length);
send(&code, sizeof(code));
send(&length, sizeof(length));
send(buffer, length);
}
catch (const error & ve)
{
UNLOCK
DEBUG_E(Vblock, "Caught an exception!\n");
throw;
}
catch (...)
{
UNLOCK
}
UNLOCK
}
kostoprav 21.06.2013 15:18 # −1
roman-kashitsyn 21.06.2013 15:19 # −1
someone 21.06.2013 16:58 # +2
superhackkiller1997 21.06.2013 15:23 # −5
roman-kashitsyn 21.06.2013 15:34 # +3
guest 21.06.2013 15:56 # 0
roman-kashitsyn 21.06.2013 16:05 # 0
guest 21.06.2013 16:06 # 0
guest 21.06.2013 16:16 # −2
золотой гребешок
маслена головка
шелкова бородка
roman-kashitsyn 21.06.2013 16:29 # +2
Я ещё не до конца вкурил назначение этого поделия в 2000 строк, наверняка тут ещё пара килограмм архитектурного говна.
guest 21.06.2013 16:31 # 0
Cpp 21.06.2013 16:59 # +1
superhackkiller1997 21.06.2013 17:12 # −4
Реально? Сокет? man socket.
Питушня думает, что сокет в сотне нитей будет работать быстре, чем в одной? Не смеши мои тапки анскилябра. Читаешь сокет - фигачешь запросы в пулы - пулы исполняешь в воркерах. Шарят сокет только питухи, да и ведро умеет свои шарящиеся сокеты, которые работают лучше твоей анскильно питушни.
lock_free - юзай хардварную атомарщину.
guest 21.06.2013 17:25 # +3
Обычно у Вас царс^Wбольшие проблемы со знаками препинания, но здесь, на удивление, все правильно.
roman-kashitsyn 21.06.2013 20:31 # +5
Специально для тебя транслирую в пи-код:
Лол, не я написал эту питушню. Привыкай, в реальном мире тебе редко придётся чинить свои царские высеры. Питушня много чего думает, разгребать поделия всегда приходится более квалифицированным людям. И ежу понятно, что быстрее и проще разгрызать протокол в отдельном потоке и складывать готовые команды в шуструю очередь, чем устраивать танцы с локами.
superhackkiller1997 21.06.2013 20:40 # −9
myaut 22.06.2013 00:06 # +13
superhackkiller1997 22.06.2013 08:14 # −2
Lure Of Chaos 22.06.2013 10:56 # +1
defecate-plusplus 21.06.2013 15:45 # +5
absolut 21.06.2013 15:54 # +6
defecate-plusplus 21.06.2013 15:55 # +1
guest 21.06.2013 15:56 # 0
Arbatan_Pokrovan 28.10.2020 20:04 # 0
defecate-plusplus 23.06.2013 23:16 # 0
завела меня судьбинушка кривой дорогой к жабе зеленой
нужен совет по литературе, типа "как стать дерзким и успешным за одну луну"
roman-kashitsyn 24.06.2013 07:08 # +3
Честно говоря, Эккеля не читал, но отзывы уж больно хорошие. Моей первой книгой был Шилдт/Ноутон, потом Core Java Хорстмана в двух томах. Обе книжки весьма объёмные и, честно говоря, так себе.
Если это не мимолётное увлечение земноводными, крайне рекомендую Effective Java Блоха. Мне она понравилась даже больше Effective C++ Майерса.
Ну и в утешение могу сказать, что ты не одинок:
Если будут конкретные вопросы по языку или инструментам, попробуем ответить. Если не хочется флудить тут, могу дать свой контакт, консультации бесплатно :)
defecate-plusplus 24.06.2013 09:10 # +1
Lure Of Chaos 24.06.2013 09:21 # 0
http://refcardz.dzone.com/refcardz/core-java например
defecate-plusplus 24.06.2013 09:32 # 0
может есть где скачать бесплатно без смс?
Lure Of Chaos 24.06.2013 09:49 # +2
а вообще ща себе на дропбокс подборку закину
https://www.dropbox.com/sh/zifnfl9eienn75d/J6Qd5YPCL-
defecate-plusplus 24.06.2013 10:05 # 0
разве это всё что надо настоящему индейцу? :)
bormand 24.06.2013 10:21 # 0
Еще где-то тут проскакивал годный FAQ по шаблонам дженерикам. http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
P.S. А вообще я без образования жавоёба ;( Учился основам на J2ME, пилении клиента Haven & Hearth и ведроиде методом тыка, чтения джавадоков и какой-то матери. Вышеперечисленные книжки читал уже только в районе ведроида... Поэтому мне слишком верить не стоит.
defecate-plusplus 24.06.2013 10:25 # 0
пока что мне нужны базовые знания, в обезьянем стиле, т.к. JavaEE во все поля
а многопоточностью будет заниматься томкат в меру своих ынтырпрайзных сил
roman-kashitsyn 24.06.2013 10:29 # +1
Как нелёгкая занесла от программирования термоядерных реакторов к возне с контейнерами сервлетов?
defecate-plusplus 24.06.2013 10:33 # 0
всё было гораздо приземлённей, в буквальном смысле этого слова :)
зовут управлять всем производством разработки в одной конторе, а там сейчас насущный прожект - на джаве допиливать в рамках проприетарной системы
как я смогу им заниматься, если не буду про джаву ничего знать
roman-kashitsyn 24.06.2013 10:38 # +1
Desktop 28.10.2020 17:01 # 0
defecate-plusplus 28.10.2020 17:11 # 0
wvxvw 29.06.2013 17:39 # +1
Дикий кот - это просто бажная копия httpd, фальшивый ынтрырпрайз. Стеклянная рыба - это настоящий ынтырпрайз. В Яве ынтырпрайзность определяется гигабайтами памяти которые сервер должен зохавать, чтобы запуститься. Дикий код слабоват еще.
Еще есть такой показатель ынтырпрайзности: количество Виндовз-шелл файлов в дистрибутиве Явовского сервера, если меньше сотни - это ложный ынтырпрайз, не нужно такой брать.
bormand 29.06.2013 18:44 # 0
wvxvw 29.06.2013 19:21 # 0
bormand 29.06.2013 19:50 # 0
wvxvw 29.06.2013 20:15 # 0
bormand 29.06.2013 20:38 # 0
Либо пишете проект нормально, чтобы все модули в нем требовали одну версию парсера - и тогда будет загружена только одна.
Либо радуетесь, что это хотя бы работает, несмотря на разношерстность.
Имхо лучше заплатить пару сотен мегабайт за нормальный side-by-side, чем плясать с бубном и пытаться совместить несовместимое и впихнуть невпихуемое, в то время как сроки развертывания поджимают.
Я это испытал на своей жопе, когда старый кусок сайта баговал на старом пёрле, а новый - на новом. И поверьте, я бы тогда отдал эти сраные 100-200 метров, чтобы побыстрее запустить новый код, а потом в спокойной обстановке убрать косяки в старом...
wvxvw 29.06.2013 20:57 # 0
Мне такие просто не попадались, но я никогда не задавался целью найти. Чтобы писать проект нормально, нужно не использовать библиотеки третьих лиц. А без этих библиотек - Ява можно заменить чем угодно, и в любом случае с выгодой для себя.
bormand 29.06.2013 21:06 # +1
Ну дык вам дали возможность хоть как-то юзать эти разношерстные библиотеки... тут радоваться надо, а не память жалеть... В тех же пыхе или перле это вообще не взлетит, если не прикручивать костыли для side-by-side запуска, которые точно так же сожрут память.
Да те часы, пока вы будете переписывать все сами, или админ будет подбирать модули, на которых взлетят все куски проекта, или кто-то будет фиксить одни куски, чтобы они взлетали на библиотеках, используемых другими обойдутся намного дороже, нежели сраные несколько тысяч за ёбаную 16 гиговую планку памяти...
roman-kashitsyn 29.06.2013 21:14 # 0
bormand 29.06.2013 21:20 # 0
Не напоминайте... Я тоже поднимал redmine с плагином для git. Это был настоящий ад...
В руби, кстати, с совместимостью либ, судя по этому опыту вообще тяжко. Если бы не было тулза, позволяющая запускать каждую прогу/сайт в своем окружении со своим набором либ, было бы вообще неюзабельно.
roman-kashitsyn 29.06.2013 21:34 # +1
Да и язычок так себе, ничего особо примечательного, куча сахара. Хотел поиграться с RoR, но так и забил по причине оверинжиниринга и магии.
Desktop 28.10.2020 17:03 # 0
guest 29.06.2013 21:19 # 0
roman-kashitsyn 29.06.2013 20:35 # +2
C WebSphere тоже приходилось работать: надёжный и стабильный, но шибко мудрёный и порой жутко тормозной. К JBoss у меня предубеждение, ибо он у меня ассоциируется с первым опытом JSF, которого я терпеть не могу, но с последними его версиями работать не приходилось. Говорят, юзабельно.
Сервлеты на томкате прекрасно взлетают, в основном там отсутствует всякая ынтерпрайзная шелуха JSR*.
wvxvw 29.06.2013 21:02 # 0
Единственное что, при выборе tomcat <-> httpd выбирать кота - глупо особенно для настоящих боевых задачь, а не для каких-то корпоративных спредшитов, которые никто больше одного раза в месяц не открывает. У этого сервера такой длинный послужной список уязвимостей, что только IIS может его обогнать, да и то не факт.
roman-kashitsyn 29.06.2013 21:12 # +1
Когда это httpd научился сервлеты выполнять? Да и для боевых задач tomcat вполне годится: linkedin.com, например, на нём крутится. Ну и используется он в основном через реверс-прокси, ему особого ума и не надо.
bormand 29.06.2013 21:13 # 0
Это, видимо, wvxvw тонко намекает на ненужность жабы в вебе ;)
roman-kashitsyn 29.06.2013 21:18 # +1
MAPTbIwKA 28.10.2020 17:12 # 0
лол)
ну как, поигрался?
guest8 28.10.2020 20:00 # −999
guest8 28.10.2020 20:03 # −999
guest8 28.10.2020 20:06 # −999
MAPTbIwKA 28.10.2020 20:08 # 0
guest8 28.10.2020 20:00 # −999
wvxvw 29.06.2013 21:19 # 0
Сервлет можно запустить локально, на каком-нибудь сервере закрытом от внешнего мира, сидящим за проксей httpd - это и будет луцшим решением. Особенно если сервер запускающий сервлет вообще в принципе, никогда не будет общаться по HTTP.
bormand 29.06.2013 21:23 # +2
Ну собственно юзать кота в качестве фронтенда тут никто и не предлагал. И как это поможет в борьбе с пожиранием памяти, описанным вами выше?
> сидящим за проксей httpd
Тогда уж nginx. Он как балансировщик, имхо, получше.
> Именно по-этому у линктин полгода назад увели базу пользователей со всей информацией?
99%, что ошибка была в прикладном коде или мозгах человека протерявшего свой пароль, а не в HTTP демоне. Можно ссылку с подробностями взлома?
wvxvw 29.06.2013 21:42 # 0
Я знаю не более, чем то, что тут написано. У меня там тоже акк есть, но мне как-то все равно, своруют его или нет :)
bormand 29.06.2013 22:19 # +1
Ну здесь про подробности взлома только одна фраза Internet-security experts said that the data breach had occurred because of the failure to use HyperText Transfer Protocol - Secure (or HTTPS). А судя по ней они просто не юзали HTTPS для аутентификации, и хеши паролей сперли пассивным прослушиваним или подменой DNS. А тут HTTP сервер вообще не при делах.
roman-kashitsyn 29.06.2013 21:24 # +1
> Сервлет можно запустить локально
Так все и делают обычно, нафига его в качестве фронтэнда выставлять. nginx с балансировкой наружу, токаты в приватной сети без прямого доступа.
ИМХО в RoR, обычно работающем в passenger под божественным httpd, уязвимостей в мильон раз больше нашли.
bormand 29.06.2013 21:25 # 0
wvxvw 29.06.2013 21:37 # 0
Что до nginx - а они уже починили фишку с кукис? Долгое время отказывались. Смысл был в том, что если передавались кукис больше, чем предписывает стандарт, nginx падал. Т.е. не игнорировал, а просто завершал работу в аварийном режиме.
Что интересно, Ханчентут долгое время считался самым надежным сервером. На нем (по слухам) рабоал НАСДАК и еще какие-то важные финансовые учреждения. Я случайно нахожусь в группе рассылки Ханчентута, и вижу как со временем любые альтернативы httpd превратились в кустарщину. У httpd просто на порядок больше тестов и реальной практики, и это ничем не заменить. Если вы сейчас спросите у разработчиков Ханчентута о надежности этого сервера, они просто скорее всего мечтательно улыбнутся...
Кроме этого, мне как-то попадалось исследование о кеш-иньекциях какой-то то ли австралийской то ли польской девушки. Очень основательное, в котором описывались масса дурацких ошибок, которые делают серверы, изза того, что HTTP очень плохо реализован браузерами, и на сколько это сложная логистика учесть всяческие нестандартные варианты поведения... жаль, сейчас не могу найти документ.
bormand 29.06.2013 22:09 # +1
Что-то не могу найти статьи про это. Попадаются только про ошибку 400, при больших куках. Но это вполне адекватное поведение. Да и фиксится в конфиге при желании.
> кеш-иньекциях
Ну, насколько я понимаю, серверу кеш-иньекции совершенно не страшны, если это не какая-нибудь прокся типа squid, которая должна лезть на просторы инета. Да и причину этих иньекций серверу никак не устранить... Его же просто никто не спросит...
wvxvw 29.06.2013 22:25 # 0
Нужно искать по ключу "nginx cookies 502 bad gateway" - гугл выдает несколько страниц результатов, хотя я так давно не интересовался - наверное что-то с этим сделали уже.
bormand 29.06.2013 22:42 # 0
Когда я читал про кеш иньекции, мне попадались именно иньекции в браузер, путем подсовывания ему в кеш вредоносного js, который потом будет исполняться на настоящем сайте (т.к. браузер берет либу из кеша). Подобную атаку можно провести и на кеширующие прокси типа squid'а, которые потом радостно будут раздавать вредоносный код своим клиентам.
Но с этим сервер мало что может поделать, кроме включения HTTPS, запрета HTTP, и надежды на сознательность юзера.
> на кеширующий сервер заливается страница
Т.е. этот сервер уже был скомпрометирован? Тогда чем тут виноват сервер, на котором крутился сам сайт?
bormand 29.06.2013 22:47 # 0
А, понял о чем вы. О том, что один юзер отправляет специально сформированный запрос, основной сервер отвечает ему, кеширующий вносит страничку в свой кеш. А затем жертва, пытаясь выполнить свой запрос получает именно эту страничку из кеша, а не свежую, которую должен был ей сгенерить основной сервер...
wvxvw 29.06.2013 22:52 # +1
guest 29.06.2013 21:28 # 0
MAPTbIwKA 28.10.2020 17:07 # 0
Это, конечно, полная безграмотна хуйня. Коммент 2013-го года, так что пишу как было тогда:
Есть спека на контейнер сервлетов, томкат ей удовлетвряет.
А стеклянна рыба удовлетворяет куда более широкой спеке в JavaEE.
Сервлет взлетит и в джетти, и в коте и в рыбе.
HTTPшной частью в томкате занимался Coyote, и вообще говоря был не обязателен: его можно было подключить вообще без ххтп.
Кстати, подсистема кота для сервлетов называется Каталина.
httpd это веб сервер Apache и к джаве и к сервлетам отношения не имеет
anonimb84a2f6fd141 29.06.2013 14:47 # 0
roman-kashitsyn 29.06.2013 15:05 # +1
Ну и, естественно, решать какую-то реальную задачу, контрибьютить в проекты.
Но я бы начинал сразу с C++.
anonimb84a2f6fd141 29.06.2013 17:54 # 0
make понимаю, но руками мейкфайлы вроде никто не пишет.
На цпп гонят за сложность, это правда? В принципе, то, что можно написать на яве или питоне, я на них бы и написал.
bormand 29.06.2013 19:00 # 0
Напиши ORM. Крестоблядские ORM'ы это море счастья и чорной магии...
bormand 29.06.2013 19:13 # +3
Кресты не сложные. Там просто дохуя подводных камней, которые проявляются не сразу и не всегда, и ты обязательно рано или поздно на них нарвешься в своей работе ;)
Вот, в принципе, годный рисунок на тему обучения c++: http://lbrandy.com/assets/c++.png.
Поскольку есть знания жабы и питона, то буквально через пару-тройку дней ты сможешь писать на крестах как на "си с классами и гуглом", и ты подумаешь, что кресты просты...
Но затем начнутся косяки. Странные и непонятные. Бессонные ночи с гуглом, водкой, стандартом, и какой-то матерью начнут снижать твою самооценку, и ты начнешь подумывать о том, что изучение крестов надо забросить, и что проект надо было начинать на другом языке. И тогда ты подумаешь, что кресты сложны...
Но если, ты пройдешь через эти тернии, и лет эдак через 5 разберешься с основными крестоблядствами, то ты поймешь, что с++ не так уж сложен ;)
guest 29.06.2013 21:22 # 0
bormand 29.06.2013 21:40 # 0
Ну тогда почитай первую попавшуюся книжку по основам языка и вперед ;) Никакие особые фичи тебе не потребуются. По идее даже от препроцессора будешь юзать только include, ну максимум ifdef.
guest 29.06.2013 21:41 # 0
>как конпелировать сишкоговно, понимать сишный код и писать что-то относительно простое?
Т.е. переходить на сишку я буду очьень врятли. Ибо я хз как писать без GC.
roman-kashitsyn 29.06.2013 21:51 # 0
очень осторожно
guest8 28.10.2020 20:02 # −999
guest 29.06.2013 21:29 # 0
IKing 29.06.2013 14:15 # −2
PSIAlt 06.07.2013 21:38 # 0