среда, 6 мая 2015 г.

OpenSSL SSL_connect returned 0

Произошла неприятная вещь, старый класс который доставлял информацию по HTTP(S) каналу отказался работать с некоторыми сайтами.

При изучении оказалось, что SSL_connect возвращает 0, спецификация говорит мол все плохо, но не совсем смотрите getError и будет вам....

Но SSL_ERROR офигительно познавательная ошибка.

После долгих и долгих копаний в инете и шаманских танцев, что эти сайты хотят SNI.
А чтобы его реализовать нужно сделать SSL_set_tlsext_host_name.

Проблема была в том, что в ssl.h, ни в tls.h не было такой функции. Обновил openSSL. функции появилось, но все равно не заработало.

Поменял   ctx = SSL_CTX_new(TLSv1_2_client_method()) - заработало.

Отдельный привет, openSSL - на странице доступной по запросу openssl windows, версия 1.01 говорит, что там библиотеки и для Cbuilder в том числе (ну есть один проект где используется билдер). Библиотек конечно-же нет. Но напомню implib -a ssleay32.lib ssleay32.dll  творит чудеса.

воскресенье, 18 января 2015 г.

Фриланс

Вообще мне пока хватает моей зарплаты (тем более она не стоит на месте), однако еще почти сразу при  устройстве на работу я попробовал себя в фрилансе. Для перестраховки.
Пару раз выполнял довольно крупные проекты, это было на русском сайте фриланс.ру.

Потом было много работы и не до этого. После печальной эпопеи с рублей решил посмотреть в ту степь. Русские сайты фриралнса теперь предлагают купить про-режимы, про-статусы и короче любую хрень, чтобы навариться на вас. Работы нет. Только для "про".

Решил зарегистрироваться на  odesk'е. В конце декабря, сайт постоянно колбасило и не мог заполнить профиль - постоянно ошибка. Написал тикет - сказали есть проблема. В январе (числа 12, эх) все же удалось.

Заполнил профиль, прошел первый тест (другие не давались выдавало 500 ошибку), отправил на Review свой профиль. И не прошел. Причем лично знаю, что там работают люди которые в программирование хуже меня на очень много. Собственно я с ними работаю на основной работе и по их рекомендации узнал о odesk'е. Вот так.

среда, 13 ноября 2013 г.

Выбираю себе домашний комп

Первый комп мой был персоналкой, P-90 по-моему.
Его я постепенно апгрейдил до второго пня, поменяв все, кроме HDD, (просто докупал более объемный и увеличивал их количество).

Затем пришлось жить отдельно от родителей, и я купил себе первый ноут - его можно было таскать из комнаты в комнату. Потом появился ADSL инет и ноут припарковался на рабочий стоол. К нему был докуплена полноценная клавиатура, и само-собой мышка (ненавижу тачболы).
Затем появился монитор :) Чтобы экран был больше, а не жалкие 15".

Короче через некоторое время купил себе полноценный комп, ноут ушел на пенсию. Комп был из бывших серверов, и хотя через некоторое время стал "притормаживать" (появились 5-герои), все равно ничего уже не апгредил. Было лень, а потом момент упущен - для полноценного апгрейда нужно было менять все кроме корпуса и БП.

Думал на что поменять - на персоналку (что дешевле) или ноутбук (что дороже), потому что экран хочу большой. И тут я обратил внимание на моноблоки. Если не брать продукцию от яблока, то дешевле чем ноут получаешь большую производительность и большОй экран.
Плюс беспроводная мышь и клавиатура, давно беспроводной инет - к монитору (по-сути) уже один провод - питалово.

Ну и домохозяйки, окажутся правы, которые показывали на монитор и говорили "компьютер, процессор и т.п."

понедельник, 3 июня 2013 г.

Оптимизация кода - ускорение приложения

Ранее (вернее до вчерашнего дня) я под ускорением приложения подразумевал оптимизацию кода.
Например заместо for(int i=0;i писал for(int i=0;s[i];i++) ...
Ну и так далее, оптимизировал циклы и прочее, часто использовал указатели на char *, нежели пользовался стандартными функциями str.
Но все изменилось вчера, собрал небольшой, но вычислительный код на машинке под Lin64.
Компилил само-собой g++, и скорость на только что свежой тачке с толи с 4, толи 8 ядерным процессором показала практически туже что и на моем рабочем компьютере - винXP32, трехлетней выдержки.

Что за нах? Подумал и поискал в инете, нашел кучу ключей и собрал уже с ключами -m64 -Ofast -flto -march=native -funroll-loops, разница была в десять(10) раз!!!

Вот такая хреновина...

четверг, 13 декабря 2012 г.

Многострочный INSERT в VARCHAR поле

Сегодня портировали базу в IBM DB2, встряли на insert'ах в текстовые поля: varchar'ы и blob'ы, решение простое - нужно квотировать символы #10 и #13 как '||chr(10)||' и chr(13) соотвественно, чтобы весь insert был в одну строку. Без единого разрыва, как говорится

пятница, 5 октября 2012 г.

вперёд

Создаем новый проект, сделано 99%, до окончательного пуска осталось от пары недель до бесконечности, это для тех кто понимает.

Надеюсь все срастется, проект реально неплох.

понедельник, 10 сентября 2012 г.

Как сортировкать массивы в PHP по нескольким полям

Задался тут вопросом как сортировать в PHP массивы по нескольким ключам, поискал (не сильно долго в инете) ничего не нашел, а потому придумал свой вариант.

Все очень просто, и делается за три прохода:
1. Пробегаете ваш массив и одновременно создаете новый (tmp), где ключ - ключ в исходном массиве, а значение склейка ключей. Например для строковых $a.'-'.$b.'-'.$c, а для числовых можно воспользоваться умножением.
2. Сортируете полученный массив sort или rsort
3. Создаете новый массив пробегая по отсортированному tmp, создавая массив по заданному значению из tmp и значению из исходного массива.

Это возможно лишь потому, что PHP при создании нового элемента массива элемент точно добавляется в конец, в Perl это бы не прокатило. Там он бы попал по хешу для сортировки. Да и сортировать в Perl'е гораздо легче, следует лишь указать любую пользовательскую функцию перед sort. Да и Perl круче PHP, но пост совсем не про это....