pro
pro
Artjom Kurapov
27 posts
Веб-разработчик из Эстонии https://kurapov.ee
Don't wanna be here? Send us removal request.
pro · 9 years ago
Link
1 note · View note
pro · 11 years ago
Text
Integration testing of web app for injections
If you've got a web app that you want to perfectly cover with tests, here is what you should have:
backend unit-tests — mostly models and isolated classes are covered - code gets isolated (also single responsibility principle is maintained)
frontend unit-tests — karma + phantomjs will check all of your angular-services or backbone-models
e2e (scenario, system) tests — most likely based on selenium (protractor, selenide). Slowly, entire functionality of working system with UI gets tested, so you tend to think about use cases
db/entity tests with migrations — your DB changes are added to base "from zero" dump and result state is compared to entity/record classes. This way your code and your DB schema is in sync
testing db-procedures I don't mention because i'm not into PL/SQL, but maybe you should
integration tests for external systems/apis - of any type (rest, ftp, soap) and source (social networks, accounting, warehouse, SMS-gateway) is tested for:
availability (like pingdom does)
structure compatibility (simple GET with json comparison is enough)
full write-interaction (usually partner-company sets up a testing machine with their developer)
integration tests of controllers/api — are executed without browserm through plain HTTP requests, that emulate  ajax or mobile devices
simple get - requests, checking for errors and stack traces
post/put requests that change data
in messed-up cases (with mobile devices), when e2e tests are impossible to run, but functions require testing, you get sequential scenario requests (not single get-post ones), that save entity and user states (in DB or session)
So lets take a look at last ones
Unit-testing controllers is inconvenient
Testing controllers with unit test is although fast in execution, is terrible at writing and maintenance. Yes, I've heard Uncle Bob saying that you need to cover code entirely, but controller is a place where multiple sources join:
configuration (from file includes, yaml, database, constants) — that means that we either need to execute & include all files, or that we need to mock all possibilities with constant-value replacements
new instances of models - you've got to mock those too, since you have separate unit tests for models
global IO variables and methods - you need to put them in some untestable models and mock them
global and/or static variables, factory-instantiation - same as with configuration, its complex
aspects - annotations, access, logging, reflection-based logic — you'll need to come up with some magic mocking there as well. For example - template names for methods can be in annotation, how do you unit-test that template engine gets called?
But worse of all ofcourse is not the mocking itself, but its amount. If your controller method has 5 models - thats the least amount of mocks you need to define. In addition, for every model method call, you need to write not one line of its emulation, but several — which and how many times was that method called, with which arguments and what got returned.
Sometimes mocks should return an object (just like PDO can return PDOStatement for example) and call its method. Now you have mocks depending on one another. Often, i get confused because of the order of their registration. Since calling testable method should be at the end of the test, registering mocks is supposed to be before it, so you get test method that follows testable code upside down. To put it shortly — writing unit-tests for controllers is dangerous. (Though some advice looking at phpspec)
How to test controllers
Integration tests are somewhat similar with end-to-end tests, but they don't include UI
So we need a class with CURL functions for HTTP requests (get,post.. if you need delete and put for your API, put them in too)
Write authentication call, if you have one (I use cookie file and thats enough for me)
Add phpunit @depends login , so you don't rape your server if login fails and you've got tons of tests to execute
Simple get-requests with existing DB ids that should tell you if some error got in, that unit tests missed
Now lets see POST/PUT requests. They usually have bigger security vulnerability frequency, because they have more parameters and logic during state change. Adding and changing entities should return some result. Lets say {result:1, id:3} in JSON will mean that object with certain ID got created. Apart from usual tests for saving, we need to push all possible parameters with SQL- and XSS-injections. 
SQL-injections shoule either give us error right away, or after we get/read entity, passed value (in our case 1' OR 1=1) will differ from stored in DB (in this case, possibly "1"). Sometimes, values get type-casted, and so string will become int value and we might need to treat as ok.
With XSS its a little harder. We need a browser to see if injected JS is executed. I solve this by running e2e tests after integration tests and since DB is not reset, system tests should encounter injected alerts that will stop e2e tests. A list of XSS attack tokens is on OWASP.
For automation, i wrote trait for PHPUnit-tests, because its easier to reuse same code in different places. 
trait SQLinjection { private $AttackTokens = [ '1" OR 1=1' ]; public function checkInfectedUpdate( $saveURL, $readURL, $fields, callable $comparisonFn){ foreach($this->attackTokens as $injection){ $data = $fields; foreach($fields as $k=>$v){ $data[$k]=($v=='*' ? $injection : $v); } $saveResult = $this->post($saveURL, $data); $getResult = $this->get($getURL); $comparisonFn($injection, $getResult, $saveResult); } } public function checkInfectedInsert(..){..} }
Each integration test inherits IntegrationBaseTest -that includes CURL-wrappers and URL of the server. Test method should know how to compare injection with results from saving and getting, because in each entity of API get() calls and formats differ - somewhere its a mere array, while others include hierarchies that you need to iterate (and get a last version)
InvoiceControllerTest extends IntegrationBaseTest { private $phpErrorDetection = 'error'; use SQLinjection; /** * @test */ function login() { $result = parent::login(); } /** * @test * @depends login * @group security */ function postSave_AddingInjection() { $self = $this; $this->checkInfectedUpdate( $this->baseURL . 'invoice/save', $this->baseURL . 'invoice/get?id=3', [ 'company_id' => '1', 'title' => '*', 'description' => '*' ], function ($injection, $getResponse, $insertResponse) use ($self) { $this->assertEquals($injection, $getResponse['result']['title']); $this->assertEquals($injection, json_decode($getResponse['result']['description'])); } ); } }
  As you write controller tests, it seems that you also need to
test for privileges (who should get response?)
refactor controller code and move complex logic to models (because its hard to understand fat controllers)
get rid of stacktrace printing - because client should see sensitive info
fix cases with DB integrity violation, when you're trying to add an entity that refers to other entities, without checking in DB if they exist at all
My suggestion doesn't solve questions with CSRF, redirects, unsalted passwords, SSL, sessions, configuration errors, but it does improve application functional structure in security and logic, even if you use PDO with bindParam() everywhere. 
Original post: http://kurapov.name/eng/tech/automated_sql_xss_testing/
2 notes · View notes
pro · 18 years ago
Text
Учимся английскому. HLI8750
В Таллиннском Техническом Университете английский на магистратуре мало отличается от английского на бакалавре, видимо потому что институт решил что на магистра часто поступают студенты из других заведений, где преподавание целиком отличается.
Поэтому первое дело что мне пришлось делать так это написать тест. Я поначалу удивился падению результата своих знаний с 80% до 65%, подумав что действительно засиделся на работе, но как оказалось тест был чуть посложней и некоторые вообще его не сдали. Впрочем попав к другому преподавателю я обнаружил не только то что стало проще учиться (а куда уж проще!), но и достаточно интересных людей рядом. Например есть работники таких компаний как Webmedia и Helmes.
Используемые материалы в основном упражнения от учителя на грамматику, времена, passive voice но есть и основная литература - the language of meetings, видео конференции с TED, at Google talks, Global change, Euronews и темы естественно популистичные типа экологии, альтернативных источников энергии и деловых встреч с менеджментом.
Английский считающийся тут продвинутым (advanced) на самом деле не вносит ощутимой новизны - идёт повторение того как надо делать
Curriculum vitae
Informative presentation
Persuasive presentation
Report
И в заключение немного слов которые я для себя открыл, может кто-нибудь найдёт для себя что-то новое.. tentative предварительный indiscriminated неразборчивый, неясный gimmicks (to go in with) рекламный приём tatty неряшлиый chauffeur шофёр consessions уступки rapport взаимоотношения feasible реальный, подходящий incinerator кремационная печь prenatal предродовой to hasten спешить, ускорять to impose налагать (штраф, ответсвенность) to swaithe обмат��вать to exacerbate обострять (ситуацию) to enhance улучшать (качество) carcinogenic канцерогенный (вызывающий рак) misconceived не продуманная (политика) standstill застой phenomenon феномен, мн. - phenomena stress ударение (у слова) (via Artjom Kurapov)
1 note · View note
pro · 18 years ago
Text
Пингуем technorati по XML-RPC
Я уже писал про XML-RPC и использование его с livejournal.
Месяца 4 назад  я зарегистрировался для продвижения блога наtechnorati - англоязычном аналоге яндекс.блогов, но обнаружил отсутсвие обновления. Как оказалось,  всё дело в том что technorati пошло как раз по тому пути о котором я говорил чуть ранее про Google.
Technorati конечно имеет своих пауков, но обновление происходит пользователем. И что-бы не лазить каждый раз после добавления статьи я решил использовать немного изменённую функцию для движка b2 и всё ту же библиотеку для XML-RPC.
  function pingTechnorati() {   require_once(sys_dir_alien.'xml-rpc/xmlrpc.inc');     $siteurl=sys_url;     $blogname=sys_title;     $client = new xmlrpc_client("/rpc/ping", "rpc.technorati.com", 80);     $message = new xmlrpcmsg("weblogUpdates.ping",  array( new xmlrpcval($blogname),  new xmlrpcval($siteurl)));     $result = $client->send($message);         if (!$result || $result->faultCode())     return(false);         return(true);   }
В результате получаем - flerror0messageThanks for the ping, всё работает
Также по теме Technorati как блогосферы интернета читайте..
Как быстро попасть в Топ 100 на Хабре
Поддомены в apache - наконец-то ценный пост от злого пса
А не по теме  - вчера купил куртку в reserved, где кстати очень грамотно всё сделано - цены не слишком высокие как в monton, сразу женщина подошла и помогла выбрать, освещение, размещение, музыка - всё оптимально и не броско. Видел сегодня Андрея и Катю, на работе переезд, а офис ещё не найден.
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
XFN и FOAF
Не основываясь ни на чём я могу сказать что 40% читаемых мною блогов обращают какое-либо внимание на шумиху Web 2.0, 4% из них задумываются о будующем web 3.0, о семантике и только единицы реально изучают микроформаты и пытаются об этом писать.
FOAF это практическое применение формата семантики RDF, а цель раскрывает значение этого сокращения - друг моего друга, т.е. формат связей некоего блога или ресурса с другими. Документация и весь формат разрабатывался с 2000 года и с того времени завоевал популярность в основном среди прогрессивных web-разработчиков.
XFN это микроформат проще реализующий смысл FOAF, технически в виде отношения многое к многим как и тэги. Отвечает стандартам XHTML,и всё что от вас требуется так это добавить параметр rel='friend' в каждую ссылку из списка. Параметр может быть не только friend, но и другим отвечать значениям - см. XFN 1.1. creator. А что-бы показать всем пример и выпендиться, можно использовать иконки.
Цель и перспективы
Децентрализованная сетка друзей. Заходите на любую социальную сеть, регистрируетесь, находите друзей, и объединяете всех в один список. Для этого надо, что-бы популярные сервисы поддерживали формат FOAF. И некоторые уже это делают - Livejournal, Liveinternet.
Поиск по сетке. Вообще поиск по людям в интернете отсутсвует, чего бы не писала seobaby. Всему причина как я уже писал, политика конфиденциальности. Конечно вы можете попробовать умерший поисковик Rubhub. Mindsack.com предлагает создать список в виде JSON, и прыгаеть с одного списка на другой.
Визуализация. Построить граф всея интернета хочет разве что параноик-детектив, но видеть нечто отличное от текстовых списков всегда приятно, особенно когда в качестве узлов выступают фотки знакомых людей. Однако достаточно взглянуть на граф от six apart что-бы понять что графы неудобны. Можно использовать xfngraph.
Работы
Для работы с XFN Дима Джус например уже нахимичил паука с такими аббревиатурами как XSLT, Python, tidy.
Oliver Brown наваял неудачно какой-то географический проект с отображением друзей.
Дикий попробовал mindsack и даже Бишопа с Флинтом подключил до момента перезапуска блога последним.
Optimus конвертит XFN в нужный xml или json.
Якобы вывод
FOAF и XFN это всего лишь "фича" блогеров, которая предоставляет данные тем кто их понимает (поисковикам и программам) и если он наберёт популярность, то его будут учитывать большие игроки. Но для коммерческих систем естественно такой формат для услуг не нужен. Тем временем можно занять нишу rubhub, хитро скомбинировать это с блогами и сделать подобие blogowar , Дима ты меня слышишь?
В заключение можно заметить, что на протяжение всей истории интернет-поиска, крупные поисковики никак не пытались повлиять и навязать форматы данных которые сайт должен показывать. Sitemap, favicon, robots.txt, meta и headers не в счёт. Когда же появятся "Google рекомендует"?
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
Введение в JSP
JSP, наряду с ASP и PHP как известно - ведущие технологии написания серверных приложений. Однако что мало знает не искушённый пользователь, так то что они вовсе не одинаковы по внутреннему миру. Эта тройка как русские богатыри, могучи в своих областях.
JSP это прежде всего Java, так же как и ASP это C#. Не вводитесь в заблуждение тем, что тут как и в тройке всё начинается с тэгов. JSP это всего лишь кожура (View из MVC), и в действительности если вы пишете обычную страницу то сервер Apache Tomcat (ранее - проект Jakarta) интерпретирует и создаёт сервлет, т.е. обычный класс который наследует существующий в javax библиотеке HttpServlet. Как вариант - можно вместо "сервлетов" использовать собственные классы, "java beans".
Существенное отличие JSP по сравнению с PHP - необходимость компиляции. Всякое изменение кода для тестирования хочет работу компилятора javac и перезапуск приложения у tomcat. Компиляцию и дополнительные комманды можно автоматизировать независимой прогой Apache Ant. Ещё одна особенность - приложение пишется в отдельной папке, где есть недоступная извне WEB-INF папка, а настройки для сервера хранятся не в .htaccess а в build.xml.
JSP, а точней java servlets часто используется в больших (enterprise) архитектурах где возникает необходимость во взаимодействии с сервисами третьих лиц и обмене данных с ними. А это уже - Service Oriented Architecture. Такие системы работают к примеру в банках и аэропортах. Компиляция в таких системах позволяет уменьшить число системных ошибок, которые могут показаться пользователю, а тестирование проводится даже на уровне функций с помощью JUnit. Вот честно, кто из программистов использует аналог PHPUnit?
Что касается баз данных, то есть JDBC, который может соединяться как напрямую через свои драйверы с Postgre и Oracle, так и с базами которые поддерживаются в ODBC.
См. также
Детальное введение в JSP
Литература по JSP на aleria.net
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
Element alignment
Модель объектов документа выражающаяся в XHTML очень логическая структура и гибкая. Проблема в том что ни создатели, как так часто бывает, ни веб-разработчики (и я в их числе) не представляют в полной мере всю гибкость и возможности оптимального позиционирования, из-за этого постоянно возникают вопросы и хаки, решающие проблему не-табличным решением.
Не совсем центр
Vertical alignment
Вертикальное позиционирование например предлагается делать через относительное абсолютное позиционирование, но замечу что хотя идея хорошая, просто взять и написать ниже приведённый код нельзя, потому что -50% не прокатит в Firefox и Safari. Никита кстати тоже не заметил это, потому что оба выравнивают строчку текста и пол строчки разница небольшая, да и к тому же имеет место быть какой-то хак для IE.
#container {top:50%;position: absolute;} #inner {top:-50%;position:relative;}
Поэтому в моём случае, где это действительно полезно, при показе login-формы, надо ставить реальные пиксели сдвига вверх вместо процентов.
Центр
Horisontal alignment
Можно сделать тот же вариант с параметром left. Проблема в том, что как только окно станет меньше ширины контейнера, то левая половина контейнера спрячется, поскольку весь контейнер целиком привязан точно к центру. Как вариант можно поставить выравнивание текста, но учтите, что как только вмешается абсолютное позиционирование, то всё растает. То же самое касается использования тэга center
#container {text-align:center;} #inner {text-align:left;margin:0 auto;} (via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
6 способов покорения стран
Политики и спец службы хорошо в этом разбираются, поэтому приведу в по важности в порядке убывания.. 
Военное оружие.
Естественный способ, но в мировом масштабе редко применяется, потому что даже если вы полностью поработите нацию, морально сломить её очень сложно, тем более если вы начнёте устраивать геноцид вы в будующем на свою голову получите мировое осуждение и как результат - упадок.
Генетика.
Достаточно впустить множество иммигрантов что-бы смешать национальные цели граждан. А ещё можно спаивать народ, устанавливая сухой закон или не ограничивать наркотики.
Экономическое влияние.
Интересно что после 1944 года доллар приравнивался к унциям золота, но в семидесятых Никсон отменил Бреттонвудское соглашение. После перестройки 1/3 всего оборота доллара сосредоточился в России в качестве запаса (!). Понимая это в России отменяется привязка к "у.е." и Центробанк национализируется.
Всё влияние строится на принципе кредитов. И именно эти кредиты в национальных масштабах вызывают инфляцию. Например в Эстонии сейчас наблюдается финансовый упадок, а на фоне вы можете найти организации типа BIG и SMS laen, где можно взять практически любую сумму под ощутимые проценты.
Теперь представьте - вы берёте 100 тысяч под 25% годовых (как в России после перестройки) и в состоянии выплачивать только эти проценты. Через 4 года вы уже выплатите 100 тысяч и останетесь должны 100 тысяч. А что на этом фоне делают западные страны? Дают в долг 100 тысяч и получают 200
Идеологические влияния
Это влияние ощущается значительно лучше народом.  9/11 помнят все. Распространение идеологии осуществляется по СМИ средствам массовой информации. К примеру на Эстонию легко можно влиять российскими телеканалами, на США легко влиять Аль-каидой
Переписывание истории
Будущее страны целиком зависит от того как обращались с его прошлым. США сами по себе некогда были колониями-сепаратистами, куда законный правитель точно так же как и Путин выслал войска для подавления бунтовщиков. Но теперь благодаря тому что в школах США историю изучают возможно даже активней чем математику, национальная политика крепче чем в таких же много национальных странах без переписи истории.
Мировоззрение
В Индии 300 миллионов людей которые не считают себя способными изменить свою судьбу. А в Африке большинство коренного населения и не видет смысла что-либо менять. У нас на уроке географии объясняли примерных ход мыслей - зачем человеку брать кредит, устраивать компанию, промышленность, суетится, строить, когда климатические условия таковы, что банан под рукой и отопления не надо. В Японии работники отличаются полной преданностью и даже роботизированностью. В России во время второй мировой войны было мировоззрение героев, которые миллионами гибли.
От этих примеров и не тепло и не холодно. Просто есть такой способ воздействия на массы. Вы скажете человеку что он свинья и если он в это поверит то и станет свиньёй. Это самый опасный вид подчинения и покорения человека - вера. 
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
i-see-you.com
Жила была семья Беллинжеров. Немножко помешанная и странная, но всё же. Папа занимался продажами авто под маркой Ford, мама была бывшей актрисой, дети были от других браков и как-то сначала даже друг с другом переспали. Но самое интересное закрутилось после того как мама просадила практически всё на времени, когда мыльные пузыри дот-нета девяностых лопнули. Тут я приостановлюсь немного.
Представьте себе жизнь беззаботную, когда вы за час смогли бы заработать просто на рынке акций 6 штук долларов. Представили? Так вот не занимайтесь этим если у вас нет опыта. Мама продула десятки тысяч и влезла в долги. Но фильм не такой уж трагический, потому что сын воспитывался в роскоши и перспективах интернет-бизнеса.
Тут я потихоньку перехожу к ощущаемому во всём рунете мандражу. Все юные таланты, как и этот сын, чувствуют что могут заработать бешеные деньги на рекламодателях, достаточно лишь привлечь толпу в своё русло. В интернете они называются SEO-шники - оптимизаторы человеческого внимания фигурально выражаясь. Так вот самое главное это идея, и парниша не долго думая поставил скрытую видеокамеру с видом на кровать сводной сестрички с платным доступом через интернет.
Представляете сколько народу гуляет по порно-ресурсам в интернете? Да каждый 8й запрос! Постепенно увидев перспективы к реальному бизнесу, а не к будующему реффералинга на adult finder, парень устроил настоящее реалити шоу в целом доме. Семья узнала об этом только через несколько недель..
Дальше я рассказывать не стану, скажу лишь что посмотреть стоит, особенно в свете последних событий покупок интернет-ресурсов за миллиарды.
p.s. Я играю в Blogowar.ru, чего и вам советую.
d3efa923697963a781a00ba16811f8bc
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
Эстонские расистские шутки
– Какие животные распространены в Эстонии больше всего? – Русские. Анекдот эстонских школьников и книг.
Сначала мне даже не поверилось после того как я прочитал такую новость в ЖЖ neor-а, что министерство образования вообще могло выпустить подобную книжку, или хотя бы оставить её в обращении и советах в качестве рекомендуемой литературы.
Но повидимому ситуация развивается, ВЗГЛЯД опубликовал развёрнутую статью, начатую в МК-эстония , а в ЖЖ комьюнити estonia топики об этом просто стираются.
Я сам человек спокойный и то что творится в русских школах в сравнение с эстонскими (приоритеты ремонтов, размер зарплаты, приоритеты конкурсов) терплю, хотя и понимаю явную дискриминацию по языковому признаку. Но я тем более не отдам своего ребёнка в "эстонску элитную школу" типа Французского лицея что-бы там насмехались над национальностью человека.
Буду ожидать реакции в прессе или хотя-бы у Сависаара в блоге, которого реформисты надеются сместить с поста мэра на следующих выборах. Кстати в России есть запрещённые книги (раз уж они издались), я думаю Эстонским министрам стоит поскорей подумать о том же.
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
Von überblingen клуб
Я могу много пофилософствовать о вопросе для чего нужная дискотека, но появляясь в клубе всё становится очевидней и проще, потому что нельзя мудрёно философствовать когда из колонок бъёт басс в 80 децибелл так что трясётся пол и всё здание.
Von Überblingen - недавно открывшийся напротив Кристине кескуса клуб. Интерьер оформлен, а точней оставлен от старого основания - ангара постройки эпохи социализма. Для того что-бы показать наоборот роскошь, были добавлены на стены резные узоры, на колонны - реклама, более четырёх барных стоек. В целом помещение схоже со всеми существующими клубами, в том числе Террариум и бывшее Декольте, но больше всего мне напоминает один клуб на Сааремаа - центральная площадка и тва балкона, внизу сцена.
В минусы:
Название. -Ходил сегодня в юберблинген.. -блины ел?
Индустриальный и роскошный стиль конечно подчёркивает жёсткость и силу, но из-за того что помещение не отделано качественной штукатуркой, можно обнаружить слой пыли на полках.
Нулевое коммьюнити на сайте, и никакой галереи, хотя фотограф ходит и щёлкает
Теснота и стекло. Когда время подходит к часу ночи, то можно заметить разбившиеся стаканы и тесноту на танцевальной площадке.
В плюсы:
Местонахождение - практически центр города, машину можно рядом оставить
Роскошные украшения - подушки с надписью "imperia", туалет где по стенам льётся вода.
Новые люди - ограничение на цену билета в 100 крон уже фильтрует большинство студентов, хотя девушкам бесплатно вход, ничего плохого о внешности посетителей сказать немогу
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
SQL Maestro
SQL Maestro это компания, производящая административные программы баз данных. Практическая реализация очень схожа с SQLyog, т.е. так же позволяет легко управлять таблицами, данными, базами, схемами, функциями, тригеррами и тп.
В минус - отсуствие HTTP-туннелирования.
В плюс - возможность составление диаграммы структур. В комплекте есть поддержка MySQL, Postgre, Oracle, MS SQL server, Firebird, Max DB.
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
Windows Script Host
WSH это обычный компонент Windows который у меня втихую так взял и отчего-то пропал, но этого я сразу не узнал, начну по порядку.
Посетители моего aleria.net вдруг пишут что в IE нивкакую не хочет работать функция javascriptовская, а IE7 я так и не установил ещё, поэтому лезу в старенький IE6. После полу часа я понимаю, что javascript вообще не работает в IE. Что логично переводит меня в вопросительное состояние, а работает ли вообще что-либо в Opera и недавно вышедшей гламурной Safari. Последняя падает со скрипом ещё при установке с ошибкой Windows Installer Error 2738, очень схожая ситуация складывается и с Windows Media Player 11, который вроде бы и устанавливается, но GUI запускаться не хочет.
Подозревая вирусы и всевозможные защиты Microsoft, перелазил нет и нашёл таки оный WSH, который ещё и хотел genuine Validation. Не долго думая - нашёл прямой линк. Мораль - проверяйте свою работу в других браузера, может и там работает, тогда будет ещё повод гордиться собой.
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
Skypecast
По всей видимости аудитория рунета ещё не успела настолько прочувствовать Skype, насколько он используется на западе, впрочем так же дела обстоят и с MSN и в диаметрально противоположном виде - с Livejournal. Skype и MSN часто используется в рабочих условиях, забудьте про ICQ. И хотя я ни первый, ни второй не люблю за их прожорливость памяти, а в последнее время Skype сдал позиции своими августовскими падениями серверов и подозрительной работой с .passwd.
Skypecast это особенность skype, реализующая лекцию-чат. Вы создаёте свою лекцию, максимум через 5 часов можете её начать. Слушатели во время лекции могут запрашивать право слова и получать возможность говорить. Лекции могут быть публичными и скрытыми. Во время выступления если человек перебивает другого, то громкость второго понижается, создавая приятный эффект телевидения.  Скайпкаст описывается языком, темой и тд.
Увы несмотря н�� всю веб-два-нольность как самого проекта Skype, так и его сателлитов, удивительно, но факт как легко можно испортить любую демократию, впустив в массу толпу необразованных уродов (этимологию этого слова вы можете узнать в статье русского языка). Например среди тэгов можно найти сначала с улыбкой пару слов, созданных специально ради флуда. Всё было бы не так печально, но заходя в какую-либо открытую лекцию вы как ��удто попадаете в общественный транспорт, обязательно выскажется анти-социальный элемент.
Skypecast из-за отсутсвия модерации таким образом не может конкурировать с pod-кастингом, где записанная лекция не предусматривает комментариев или нередактируемых диалогов. В то же время это не значит что skypecast не имеет своей аудитории - существует Scast, который пока убого но планирует предстоящии лекции.
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
Joomla
Joomla - удачное ответвление Mambo CMS, оформившееся как самостоятельный продукт с открытым исходником и большой комьюнити. Попробую описать то с чем мне пришлось столкнуться и какия я сделал для себя выводы.
Мне надо было быстро установить html-шаблон на простейшую страницу, где есть только меню и статьи. Поэтому мои советы:
После установки joomla, что-бы убрать ненужные модули со страницы (Modules/site modules), не лезьте сразу в код, он ужасен своим хаосом (взгляните хотя бы на index.php), зайдите в админку и поубирайте компоненты.
Содержание. После того как вы поставили свой html в темлейт, который находится в зависимости от скина в templates/madeyourweb/index.php и отредактировали css на свой, вам возможно захочется заняться содержанием. У статей можно отключить показ параметров "автор", "дата", "хиты", "кросслинки" из админки (global configuration/content), реально же в коде это находится в components/com_content/content.html.php в очень неприглядном виде.
Меню. Основная менюшка подгружается через mosLoadModules и находится в modules/mod_mainmenu.php, настраивать модуль всё же надо через админку (Modules/Site modules/Main menu). Включаем raw list.
Плюсы и минусы системы
Функциональность.
Составление меню мало зависит от содержания и у статьи и меню разные заголовки, это правильно, но из-за этого у меню есть параметр "тип", значение которого трудно угадать для простой статьи, поскольку их 25 !
Если вы начали редактировать меню или статью, вам обязательно надо либо отменить редактирование (Cancel), либо подтвердить (Save), иначе элемент переходит в режим locked. Для малых сайтов это лишь мешает.
Интерфейс +Вполне логично отделённая админка достаточно удобна - основное выпадающее меню продублировано большими иконками. -Приготовьтесь к тому что ваши глаза разбегутся от обилия форм и таблиц. Вы создаёте статью? Дублируйте введение и основной текст вместо вставки символа разделения а-ля ljcut или того же hr-тэга.
Расширяемость и интегрируемость +Вы можете настроить показ установленных компонентов. Система устанавливается даже на старенький php 4.1 (что по сути и минус тоже) -Пользователю в первый раз трудно разобраться что такое модуль, компонент и мамбот, которые очевидно внесены из технической части, а так же как добавить статью.
Нагрузки. Buytaert приводит такой результат тестирования..
Документация. Я нашёл в просторах интернета структуру БД №1 или №2 . Она достаточно важна, потому что никакой Foreign Key связки я не обнаружил.
Качество кода. Отвратительное, судите сами.
Никакого MVC, основной вид страницы находится в скиновом index.php, остальной код передаётся от компонентов, которые хоть и сделаны в качестве объектов, смешивают html и php по страшному. Связь с базой по удобоваримому классу, похожему на PEAR-ный, правда в коде используется в основном setQuery.
Никаких переводов в базе. Всё хранится в текстовом файле без какой либо иерархии и объявляется в виде констант.
Неясный стиль названия переменных. У классов и у функций всюду префиксы "mos". Для интеграции с другими системами?
В целом я системой оказался доволен лишь в том что за день смог поставить сайт, настроить шаблон содержания и менюшки, в остальном я рад что мой сайт крутится на личном движке. Читайте так же статью Дмитрия Сергеева о сравнительном анализе Drupal, Joomla и Wordpress .
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
Рекламные сети
Я честен. Я не заработал в интернете денег настолько что-бы получить за них банковский счёт. Поэтому я попробую сопоставить какая прибыль "виртуально" всё же получилась.
Контекстная реклама. От слова context - ситуация, окружение. Всё достаточно просто - автоматика сканирует документ на наличие ключевых слов, ищет соответсвие с базой объявлений и результат публикуется у вас на сайте. На рынке уйма таких решений и они уже не новы, тем более что оплата идёт не за показ а за реакцию пользователя.
 Google AdSense. Зарубежная, поэтому мало прибыльная, впрочем всегда можно попробовать. В итоге у меня статистика за почти три месяца такая.. 10 848 показов 53 кликов 0,49% 2,10US$
Yandex direct. Уже лучше, и на нём даже Хабрахабр крутится, но из-за хороших требований к посещаемости я его не тестировал.
Altastat от Webalta. Удивили меня тем, что сами мне стукнули в аську с предложением зарегистрироваться в системе. А через неделю напомнили. Итого за 4 месяца я получил такой результат. 135270 показов 1074 кликов (из них только 274 принятых) 6.80$ 
Begun . Отличилась хорошим маркетингом - засветились на многих порталах некогда, в том числе и на mail.ru. За 2 месяца тестирования накопилось  19 кликов 0,49$
Баннерные сети. Банально стоит баннер с возможно некоей тематикой. Проблемы возникают с продажей - мелкие скажем 50 тыс показов никому не нужны, вот на два миллиона - это уже да. Фактически это прошлый век, по сравнению с контекстной рекламой, которая умеет то же самое, но с автоматическим таргетингом.
Реффералинг. Люди глупы, особенно те кто думает что может заработать в интернете, поэтому на них можно навариться, это делается просто - пишем что заработали уже тысячи долларов в интернете, люди рвуться посмотреть как это "Бомж" выбился на Рублёвку и идут регистрироваться. За счёт этих регистраций "бомжи" и живут. С другой стороны, может это всё и правда, а система создана лишь для саморекламы?
Система JoeBucks занимается именно рефераллингом
Amazon, Ozon и всевозможные книжные магазины
Линкообмен. На данный момент набирающие оборот сети обмена популярности не за счёт самих посетителей, а за счёт поисковиков. То-есть не важно какая реальная посещаемость сайта и сколько людей нажмут на эту рекламу, важно что Яндекс учтёт тИЦ, или Google учтёт PageRank и реальный покупатель "оптимизатор" получит за свои деньги повышение тИЦ/PR и как результат - повысит посещаемость своего сайта.
Sape. Трудно сказать что-то вразумительное, только начинаю тестировать.  Есть сложность с установкой php кода и безопасностью.
(via Artjom Kurapov)
0 notes
pro · 18 years ago
Text
Новая хронология
В начале девяностых, когда Россия была в состоянии культурной и научной смуты, появилось достаточно много если не лжеучёных, то нетрадиционных взглядов на медицину, вечный двигатель и историю. Если вы играли в "Sid Meier's Civilization" или с любопытством изучали историю цивилизаций, то у вас уже отпечаталось когда что происходило, история разбита на "Древнюю", "Античную", "Средние века", "Возрождение" и "Новое время". 
Так вот идея Новой Хронологии в том, что в действительности всё происходило не так как это написано в учебниках и что история была искажена по политическим и чисто случайным причинам. Основателями переосмысливания неточностей и повторяемости истории стали Морозов, Фоменко и Носовский. Последние на публикации этих книг хорошо заработали, чем заслужили отлучение от церкви академической науки.
Восстановленная хронология не достаточно ясная как в масштабах всей планеты, так и в конкретных регионах:
Все события до 10 века, будь то Древний Египет, Древняя Греция, Римская империя, Иерусалим и Христос, переносятся в промежуток 10-16 веков. Начинаетс яона порядка X века с основания Византии.
К 13-веку она распадается на три основных региона - Запад с Католицизмом-Олимпийскими богами, Россию-Орду и восточные царства.
К 15 веку Россия-Орда управляет и западом, устанавливая инквизицию над блудящими европейцами.
В 16-17 веках Орда рассыпается из-за внутренних про-западных настроений и с приходом Романовых, история глобально переписывается. 
Так например становятся одинаковыми события
Империя Александра Македонского и Османская империя. Полумесяц = рога на шлеме.
Впрочем как я уже сказал, такая теория не нашла понимания среди современных историков, более того, они "неблагодарно" начали критиковать и даже насмехаться, приводя пример идентичности личностей Петра I и Сталина, а также Гитлера и Наполеона, основываясь на тех же статистических методах оценки хронологии. 
(via Artjom Kurapov)
0 notes