четверг, 18 февраля 2010 г.

Как использовать git из за HTTP прокси с Linux машины

Оригинал статьи на Английском здесь

Собственно суть проблемы.

Все началось с того что я решил вытянуть на работе boost-cmake с gitorious, но так как там большие блобы, то клонирование по http:// протоколу через корпаративный прокси заканчивалось ошибкой 500, где-нибудь в районе 25-30%. Описание проблемы, похоже на приведенное здесь.

Утверждалось, что по git:// схеме такого быть не должно.

1. Собственно предложенный вариант - туннель git протокола через HTTP CONNECT. Данная схема используется для https:// соединений на порт 443. Так как все корпаративные прокси поддерживают данную возможность, то необходимо попросить админа разрешить метод HTTP CONNECT на порт 9418, который используется git.

2. Далее нужна утилита socat - устанавливаем ее со своего Linux репозитория (yum install socat).

3. Создайте исполняемый скрипт с именем gitproxy (или выберите имя на ваше усмотрение) где-нибудь в месте из переменной PATH (например ~/bin):

#!/bin/sh
# Use socat to proxy git through an HTTP CONNECT firewall.
# Useful if you are trying to clone git:// from inside a company.
# Requires that the proxy allows CONNECT to port 9418.
#
# Save this file as gitproxy somewhere in your path (e.g., ~/bin) and then run
# chmod +x gitproxy
# git config --global core.gitproxy gitproxy
#
# More details at http://tinyurl.com/8xvpny
# Configuration. Common proxy ports are 3128, 8123, 8000.
_proxy=proxy.yourcompany.com
_proxyport=3128
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport

4. Конфигурируем git на использование данного скрипта (git config --global core.gitproxy gitproxy или имя выбранное вами на шаге 3)

Собственно и все. Теперь git:// URL-ы тоже работают.

Оказалось, действительно, на данном протоколе все работает стабильнее।

Обновил:
- 04.02.2011 - исправил досадную опечатку в пункте 4 (спасибо Yalexand)

воскресенье, 14 февраля 2010 г.

Зимняя олимпиада 2010 // трагедия на санной трассе

Прочитал новость о трагедии Кумариташвили и посмотрел видео.

Следующая тема о том де, что он сам виноват.

После таких новостей - поганенько на душе. Лично я считаю, что тут явно виноват оргкомитет и тот, кто принимал трассу. Ошибка спортсмена не должна приносить такие последствия. И обесечить безопасность - основная задача олимпийских чиновников.

На повороте должна была быть установлена уловительная сетка, поскольку на таких скоростях даже у опытных спортсменов могли быть ошибки. И это не значит что они должны так глупо погибать.

Соболезнования родным и близким атлета.

четверг, 4 февраля 2010 г.

открыли исходники Symbian

Пока Google бодается с Apple появилась еще одна открытая платформа - Symbian. Время покажет, будет ли из этого прок, и станет ли Symbian привлекательной платформой для производителей телефонов.

Ну а пока можно ознокомиться с исходными кодами некогда закрытой мобильной платформы здесь.

среда, 3 февраля 2010 г.

Стив Джобс о Google...

В связи с участившимся сравнением Apple iPhone vs Google Android знаменательно следующее высказывание Стива
Мы не открывали поисковый сервис, но они вошли в телефонный бизнес. Будьте уверены, что их целью является уничтожение iPhone. Мы не позволим этому случиться

Вышел "новый" Boost

1 новая библиотека и некоторое количество исправленных проблем...

New Libraries

  • Uuid: A universally unique identifier, from Andy Tompkins.

Updated Libraries

  • Asio:
    • Added a new HTTP Server 4 example illustrating the use of stackless coroutines with Asio.
    • Changed handler allocation and invocation to use boost::addressof to get the address of handler objects, rather than applying operator& directly (#2977).
    • Restricted MSVC buffer debugging workaround to 2008, as it causes a crash with 2010 beta 2 (#3796, #3822).
    • Fixed a problem with the lifetime of handler memory, where Windows needs the OVERLAPPEDstructure to be valid until both the initiating function call has returned and the completion packet has been delivered.
    • Don't block signals while performing system calls, but instead restart the calls if they are interrupted.
    • Documented the guarantee made by strand objects with respect to order of handler invocation.
    • Changed strands to use a pool of implementations, to make copying of strands cheaper.
    • Ensured that kqueue support is enabled for BSD platforms (#3626).
    • Added a boost_ prefix to the extern "C" thread entry point function (#3809).
    • In getaddrinfo emulation, only check the socket type (SOCK_STREAM or SOCK_DGRAM) if a service name has been specified. This should allow the emulation to work with raw sockets.
    • Added a workaround for some broken Windows firewalls that make a socket appear bound to 0.0.0.0 when it is in fact bound to 127.0.0.1.
    • Applied a fix for reported excessive CPU usage under Solaris (#3670).
    • Added some support for platforms that use older compilers such as g++ 2.95 (#3743).
  • Circular Buffer:
    • Added methods erase_begin(size_type) and erase_end(size_type) with constant complexity for such types of stored elements which do not need an explicit destruction e.g. int or double.
    • Similarly changed implementation of the clear() method and the destructor so their complexity is now constant for such types of stored elements which do not require an explicit destruction (the complexity for other types remains linear).
  • Fusion:
    • The accumulator is the first argument to the functor of fusion::fold and fusion::accumulate(#2355).
    • Added support for associative iterators and views (#3473).
  • Graph:
    • Removed old interface to compressed_sparse_row_graph, making new interface the default.
  • Integer:
    • Reverted Trunk to release branch state (i.e. a "known good state").
    • Fixed issues: 653, 3084, 3177, 3180, 3568, 3657, 2134.
    • Added long long support to boost::static_log2, boost::static_signed_min,boost::static_signed_max, boost::static_unsigned_minboost::static_unsigned_max, when available.
    • The argument type and the result type of boost::static_signed_min etc are now typedef'd. Formerly, they were hardcoded as unsigned long and int respectively. Please, use the provided typedefs in new code (and update old code as soon as possible).
  • Iostreams:
  • Program.Options:
    • Information about option name added to a few exception classes and various clean ups in exception classes (#3423).
    • Description wordwrapping in presense of default parameters fixed (#2613).
    • Empty value in configuration file is now permitted (#1537).
    • Quotes are no longer stripped from string values (#850).
    • Fix endless loop in case of long default arguments (#689).
    • Fix compile warning caused by usage of boost::any (#2562).
    • Fix memory bug in example/response_file.cpp (#3525).
    • Most compilation warnings were fixed (#3608).
    • Make column width for description text configurable. (#3703).
    • Add general split function: split_unix() (#2561).
    • Enable open config files from given file name (#3264).
    • Additional flag for required options (#2982).
    • Enable case insensitive style for command line (#3498).
  • PropertyMap:
    • Removed old header files (directly in the boost/ directory); they were deprecated since 1.40, replaced by headers in boost/property_map/.
  • Proto:
    • Fix const correctness issues with proto::flatten and friends (#3364).
    • Accomodate recent change to fusion::fold, remove old support for Doxygen and pre-1.35 Fusion (#3553).
    • In binary operations, when one operand has a user-specified domain and the other has the default domain, the user-specified domain trumps.
    • Fix BOOST_PROTO_EXTENDS to work with elaborated types.
    • Work around EDG compiler bug with function types and cv-qualification.
  • Regex:
    • Added support for Functors rather than strings as format expressions.
    • Improved error reporting when throwing exceptions to include better more relevant information.
    • Improved performance and reduced stack usage of recursive expressions.
    • Fixed tickets #2802, #3425, #3507, #3546, #3631, #3632, #3715, #3718, #3763, #3764
  • Spirit: Spirit V2.2, see the 'What's New' section for details.
  • Unordered:
    • Support instantiating the containers with incomplete value types.
    • Add erase_return_void as a temporary workaround for the current erase which can be inefficient because it has to find the next element to return an iterator (#3693).
    • Add templated find overload for compatible keys.
    • Improved codegear compatibility.
    • Other minor changes, full details in the changelog.
  • Xpressive:
    • match_results no longer relies on undefined behavior in std::list (#3278).
    • Do NOT copy singular iterators (#3538).
    • Eliminate gcc and darwin warnings (#3734).