Ссылки о веб-разработке за декабрь 2009

Alex Kapranoff: Open InviterпїЅ - Import contacts from social networking sites like Livejournal, Friendfeed, Mevio and many more

Alex Kapranoff
Open InviterпїЅ - Import contacts from social networking sites like Livejournal, Friendfeed, Mevio and many more - http://openinviter.com/
arty, Sergey Homenkow, Andrew Pantyukhin and 2 other people liked this
OpenInviterTM is totally free and open-source solution. You can download it, change it, write plugins for it. Everything for free. What are you waiting for? Grab your OpenInviterTM today! Go to the Download section now! - Alex Kapranoff
Аналог Октазена, но бесплатный. На предмет кэтчей и приаттаченных стрингов не исследовал. - Alex Kapranoff
Да, тоже есть поддержка русских адресбуков. - Alex Kapranoff

A pretty graph as we enter the new year

I have previously talked about how unreliable browser statistics are (for example, a browser reported as having fewer users than Opera on the desktop is being reported as having nearly twice the market share Opera does). Still, people are continuing to report on these market share numbers, so I thought I would share this nice looking graph with you all:


Correct or not, it sure looks nice! Let's continue that trend in 2010, shall we?

By the way, many Nokia phones come with Opera preinstalled, so some of those Nokias could in fact be Opera!

New Facebook clickjacking attack in the wild

New Facebook clickjacking attack in the wild. I’m not sure why Facebook don’t use frame-busting JavaScript to avoid this kind of thing. The attack is pretty crafty—a Facebook page is positioned with everything obscured bar part of the blue “share this” button, and a fake “Human Test” asks the user to find and click the blue button to continue.

Opera 10.5 pre-alpha for Labs

We are excited to release Opera 10.5 pre-alpha for Windows and Mac. In this release you can test-drive Carakan, our new ECMAScript/JavaScript engine, as well as Presto 2.5 and Vega. Also, check out the more polished platform integration and a couple of new features.

Carakan Revisited

A little more than a year has passed since we launched the Carakan project, aimed at drastically improving Opera's ECMAScript execution performance, and it's finally time for the first labs release of Opera with the Carakan ECMAScript engine.

What we set out to implement over a year ago was, as I described in a previous post about the Carakan project, a new cross-platform bytecode interpreter for a new register-based instruction set, a new internal object model with automatic classification and inline property caching, and machine code generation. All this we've done, and then some.

The new bytecode interpreter and new object model are cross-platform, meaning they will work on any hardware platform Opera is ported to. On their own, they already give a significant performance boost compared to Futhark, the engine used in all current versions of Opera. Running on a regular desktop computer, Carakan's bytecode interpreter is around 3.5 times faster than Futhark on the Sunspider benchmark, and on embedded systems running less powerful CPUs early testing shows it to have an even greater advantage over Futhark.

For optimum performance, however, machine code generation, or JIT, is the way to go, and this is where we have focused most of our optimization work. Carakan is equipped with a hot-spot detecting JIT compiler that generates machine code that performs all but the most complex operations directly without calling the bytecode interpreter. It employs a combination of compile-time static analysis of the program and runtime profiling in the bytecode engine to optimize the generated code, focusing in particular on code that does arithmetic calculations. It also performs function inlining, both of simple built-in functions such as Math.sqrt() and String.charCodeAt() and of functions implemented in the script. Currently the JIT compiler only supports generating 32 or 64 bit x86 machine code, but support for other architectures will be added in time, starting with the ARM architecture.

But this is not all we have done in the Carakan project. I'd like to also mention two other interesting improvements that we've implemented compared to Futhark: a divided garbage collected heap, and caching of compiled scripts.

Divided garbage collected heap

The ECMAScript language assumes the presence of a garbage collector that automatically reclaims memory occupied by objects that are no longer needed. Carakan's garbage collector is very similar to the one used in Futhark, a basic mark-and-sweep design; we've only done some smaller, but rather effective, tweaking of its performance. We have however drastically changed how we use the garbage collector. In Futhark, all memory allocated by the ECMAScript engine for scripts running in any tab was allocated from a single shared heap, and anytime the garbage collector needed to run to free up memory, it would traverse all allocated memory. The more open tabs there were, the more expensive would a garbage collection become.

In Carakan, we instead use many smaller heaps. Each document loaded in a tab, or in a frame or iframe inside another document, gets its own. Since scripts running in different documents can sometimes access each other's objects, we have support for merging two heaps into one, and for detecting when this is necessary. The advantage of this design is clear: with smaller heaps, each garbage collection is cheaper. And since we only need to run the garbage collector on heaps from which memory has been allocated, we automatically only traverse the memory of active heaps, and leave all other heaps alone. The end result is that it doesn't matter if there are 1 or 100 open tabs; when a script triggers a garbage collection, the cost is the same.

Cached compiled programs

An aspect of an ECMAScript engine that performance benchmarks often don't measure is the performance of the compiler. Compared to Futhark, the Carakan compiler is much more focused on analysing the program and generating code that will execute fast, and may therefore be slightly slower in some cases. This is a trade-off we've made willingly.

Instead of the very efficient compiler in Futhark, Carakan brings caching of compiled programs. In practice this means that whenever a script program is about to be compiled, whose source code is identical to that of some other program that was recently compiled, we reuse the previous output from the compiler and skip the compilation step entirely. This cache is quite effective in typical browsing scenarios where one loads page after page from the same site, such as different news articles from a news service, since each page often loads the same, sometimes very large, script library.

Plans for the future

Although we're nearing the release of the Carakan engine, we don't plan to stop development of it. We have plenty of ideas on smaller and larger improvements to make, and we will also port the JIT compiler to other CPU architectures.

One area where we believe we can improve greatly is in memory usage, by switching to a much more efficient object representation. Carakan will already today use less memory than Futhark in some cases, by sharing information between similar objects via the automatic object classification system and by sharing literal data using a copy-on-write scheme, but we have plans that would reduce the size of ECMAScript objects to as little as a tenth of their current size.

We will also be looking at improving the performance of machine code generated for non-arithmetic code such as property accesses, where our JIT compiler currently produces significantly less stream-lined code than it does for arithmetic calculations.

Matt Cutts: Firefox 3.5 is Now the World’s Most Popular Browser

Matt Cutts
Firefox 3.5 is Now the World’s Most Popular Browser - http://thenextweb.com/2009...
Firefox 3.5 is Now the World’s Most Popular Browser
Jérôme Flipo, John μller, Pavel Simonoff and 10 other people liked this
Only by splitting IE6, 7, and 8, unfortunately. Not that I wouldn't like this to be true in absolute terms, though! - Joel Webber

Игорь Цаплин, терминатор: Javascript

Игорь Цаплин, терминатор
Javascript
js.jpg
nixoid, Лиова, arty and 18 other people liked this

созрели новые стандарты!

конец года выдался урожайным на приятные новости. Несколько модулей CSS3 наконец стали реальными стандартами, выйдя из стадии, где каждый браузер реализует тот предварительный вариант, который ему больше нравится (а их фанаты поплёвывают на оперу, ждущую хоть какой-то определённости).

итак, самый крутой модуль — CSS3 Selectors — теперь является Proposed Recommendation, и ему остался последний шаг до W3C Recommendation.

следующий в списке CSS3 Backgrounds and Borders, который сейчас стал Candidate Recommendation. Это этап, на котором разработчики спеки официально заявляют: «пришло время воплощать идеи в коде».

ну и последний модуль — CSS Multi-column Layout, который теперь тоже Candidate Recommendation.

подозреваю, что кто-то в опере уже включил флажок в мейкфайле, чтобы в Рождественском релизе Оперы оказался давно готовый у них код для реализации обоих этих модулей-кандидатов.

p.s.: если кто не слышал, Еврокомиссия в очередной раз признала Микрософт нарушителями закона и заставила добавить в винду экран выбора браузера. Приятно, что в Евросоюзе такие законы. Приятно, что кто-то может добиться их выполнения. Даже если этот кто-то — скромная норвежская компания.

Native JSON support in Opera

A while ago I was asked to do quality assurance on our upcoming JSON implementation. We support the JSON grammar and API specified in ECMAScript edition 5, ES5. ES5 was still being edited and changed while we were implementing and testing, but with the patient help of members of the ES-discuss list I got a test suite written and aligned with the upcoming spec. Stanislav - our JSON-implementor - had to be patient with me as tests were continually changing their pass conditions. For example, one day we were testing for the presence of a certain method, then the next day its absence! At this point our implementation is considered ready for release, and I'm pretty excited about it - it was a pleasure to test, and Opera's native JSON support is going to be fast, strict, safe and standards-compliant. According to our tests our implementation is the fastest one at parsing -
Simple parse
Opera150 000 times/second
Safari127 000 times/second
IE41 000 times/second
Firefox37 500 times/second
though we're a bit slower than the others at serializing:
Simple stringify
Safari71 000 times/second
Firefox61 800 times/second
IE57 000 times/second
Opera55 800 times/second
..so there is a bit of work left on optimizing that. Keep in mind that this is with our existing JavaScript engine - the new Carakan engine gives JSON parsing a solid boost too! Also, as you would expect from Opera, our JSON support is following the standard very closely. We are pretty standards-compliant, better than IE8 and Firefox 3.5, and on par with Safari 4. Actually, make that almost standards-compliant. There are a couple of extremely odd edge case bugs that most likely won't cause you any problems - and there is one spec violation that we've decided to keep. Blame me for that decision, since I asked Stanislav to break his perfectly compliant implementation and ignore the specification here. Sincere apologies to Douglas "Mr. JSON" Crockford... Why violate the specification? Let's take a step back: JSON has become hugely popular on the Web. It's a simplistic and flexible format for data exchange, parses quickly and integrates well with programming languages. It looks like (and is named after) a JavaScript object literal, so it's not surprising that JavaScript authors make good use of it, traditionally parsing it with eval(), loading it directly into a SCRIPT element, or using a custom parser written in JavaScript. For certain use cases JSON is replacing XML for data exchange, mainly since it can be parsed faster. However, the languages have something in common: both have Draconian error handling. Draconian error handling in JSON? Indeed, except it's nowhere near as controversial as XML's Draconianness, because JSON looks and feels like a programming language. We're all used to having to match our quotes and curly braces when programming. However, the spec grammar has a few additional constraints - a few points where correct JSON is different from and stricter than normal JavaScript source code, such as: The point of these constraints is to keep the syntax and JSON language simpler. However, when browsers start adding native JSON support, our implementations will enforce those constraints - something parsing JSON with eval() or SCRIPT tags never did. Hence, we're going to deal with potential compatibility issues with invalid JSON. The spec rule Opera is going to violate for now is the one about not allowing tab characters inside strings. Currently all other browsers allow it (and if your browser fails this test case, it does too). I would like us to align with the spec, but I'm worried that we might break websites that do not escape tabs in their JSON data. If there are such "compatibility taxes" to be paid, I'd rather not have our users pay them. As an example of what might break, I sent my GMail address an E-mail with a tab character in the subject field, and saw that GMail passed the tab around in its JSON data, unescaped. If GMail is using the browser's native JSON parsing and we follow the spec, somebody could then prevent your inbox from loading in Opera by sending you a message with tabs in the subject. And given the current browser implementations it would only break your GMail in Opera... All browser developers discussing this on the es-discuss list have comitted to aligning strictly with JSON grammar - so it should be only a matter of time before other major browsers do the right thing. When others pass the test we'll certainly follow. Meanwhile, enjoy faster and safer web applications thanks to a quality JSON implementation soon shipping in an Opera browser near you.

Типографика / [Перевод] Проблема «вспышки нестилизованного текста»

Оригинальное название статьи, «Designing for the switch» содержит игру слов и говорит а) о разработке дизайна в эпоху перемен — перехода к нормальной поддержке подгружаемых шрифтов у всех пользователей, и б) о нюансе «моргания», смены шрифта при его подгрузке с помощью @font-face. Вообще говоря, на русском языке достаточно мало информации об опыте и нюансах использования @font-face, поэтому этим переводом я предлагаю начать генерировать более-менее содержательное информационное поле на эту тему. Heath

Долгое время, создавая дизайны для веба, мы были типографически избалованы. Да, вы не ослышались. Только подумайте: шрифты для веба уже были установлены на наших компьютерах; эти шрифты изначально создавались для качественного отображения в браузерах, в том числе в мелких кеглях; мы всегда могли быть уверены, что эти шрифты есть у других пользователей.

Да, мы были избалованы. Чтобы использовать Вердану, Джорджию или Камбрию, нам не приходилось думать.

Однако дизайнерам долгое время казалось, что им нужно большего. Мы хотим использовать любой шрифт, который нужен нам для нашего дизайна. Мы много нехорошего натворили, пытаясь достигнуть этой цели — например, помещали текст в картинку. Люди поумнее придумали вспомогательные инструменты типа sIFR или Cufón. С совсем недавнего времени большинство браузеров поддерживает @font-face. Плотина открывается. Это рассвет новой эры веб-типографики, и мы обязаны ступать в неё с осторожностью.

И как же это сделать?

Железо / Охлаждение серверов — «больше» не всегда значит «лучше»

Опрос, проведенный одним из ведущих производителей систем охлаждения и кондиционирования для датацентров, компанией Liebert показал, что 66% опрошеных поддерживают в датацентрах температуру не выше 21 градуса C, и ни один выше 24C.

Температура по горизонтали — в американских «фаренгейтах».
CRAH это Computer room air-handler, по нашему — кондиционер.

При этом, рекомендации ASHRAE (American Society of Heating, Refrigerating and Air-Conditioning Engineers), пересмотренные в прошлом году, рекомендуют верхний лимит рабчего диапазона равным 27C на входе в сервер.
Читать дальше →

Selectors is a Proposed Recommendation

Many thanks to all who helped with comments, tests, and implementations! The Selectors specification was just advanced to Proposed Recommendation by the W3C Director. That means that the specification has successfully passed public review and has been sufficiently implemented to no longer need a status as Candidate Recommendation (which is also known as “call for implementations”).

Currently, the W3C members are reviewing the specification one last time. Of course, we think we have done our job well and they won't find anything wrong. They have a little over a month for that task.

However, the specification will not immediately become a W3C Recommendation at the end of the review period. That is because Selectors has normative references in its bibliography to CSS 2.1 and to the CSS Namespaces module, and so it was decided that those have to become Recommendations first. That ensures that W3C Recommendations are as stable as possible, by only depending on other Recommendations.

A bit of history: Selectors became Candidate Recommendation already in 2001, but a couple of proposed features (':contains', '::selection') were never implemented and turned out to be difficult enough that we abandoned them for now. To fix the draft with respect to those problems, a new working draft was made in 2005, which was updated one last time earlier this year.

You can see the last changes we made to the specification in the disposition of comments. Nothing major changed, but a number of descriptions were improved.

The CSS Validator supports Selectors level 3

The CSS Validator implements the latest Selectors. To check a style sheet, it is enough to choose “CSS level 3” as the profile in the Web interface.

dreikanter: MathJax

dreikanter
MathJax is an open source, Ajax-based math display solution designed with a goal of consolidating advances in many web technologies in a single definitive math-on-the-web platform supporting all major browser - dreikanter
опера вроде вообще mathml поддерживает чисто стилями: http://my.opera.com/mathml... - arty
хотя, конечно, для латекса такое не сделать - arty

Jeremy Zawodny: Crockford, webhosting, online dating, JSON, alert

Jeremy Zawodny
Crockford, webhosting, online dating, JSON, alert - http://www.stevesouders.com/blog...
amusingly awesome - Jeremy Zawodny

Unicode code converter

Unicode code converter (via). Fantastically useful tool to convert strings of characters in to every unicode and/or escaping syntax you can possibly imagine.

Semantic Versioning

Semantic Versioning. Tom Preston-Werner provides a name, specification and URL describing the relatively widely used Major.Minor.Patch versioning system. This is really useful—by giving something a name and a spec, people can say “this project uses semantic versioning” and skip having to explain their backwards compatibility policy in full.

Jeremy Zawodny: Trust Oracle? Why?

Jeremy Zawodny
Sean Kelly, Vishy and arty liked this

SOA in Clouds

Не мог удержаться:

Arthur Welf: Don't Forget About Email

Arthur Welf
Don't Forget About Email - http://www.avc.com/a_vc...
"In this day and age of social media and an ever expanding set of communication tools (SMS, IM, Twitter, Facebook, blog comments, etc) it is easy to forget about email. But that would be a big mistake. ... Our portfolio company Etsy operates a market for handmade items. Etsy has been operating for over four years. For most of its life, Etsy had little to no email communication with its buyers. In the past six months, they built a number of email services and now email is one of the top traffic drivers to the site, passing popular new traffic sources like social networks, blogs, and communities." - Arthur Welf

Git / GITips & GITricks

Уже было несколько статей, где авторы рассказывали о том как скрасить консольные будни с git. В последней приведенной ссылке автор предлагает создавать алиасы, для работы c git, непосредственно в shell. Это не очень хороший способ, хотя бы потому, что, например алиас gc будет конфликтовать с одноименной командой пакета graphviz. git сам прекрасно умеет работать с собственным алиасами.

Ваш новый gitconfig

Никита Васильев: I would like to see API for capturing screenshots. http://dev.w3.org/2009/dap/camera/

Никита Васильев
I would like to see API for capturing screenshots. http://dev.w3.org/2009...
А как давно твиттер перестал по умолчанию укорачивать длинные ссылки? Кстати, хорошо что перестал. - Никита Васильев

псы в рапиде: 4 Out of 5 Viewers Leave If a Stream Buffers Once

псы в рапиде
4 Out of 5 Viewers Leave If a Stream Buffers Once - http://newteevee.com/2009...

шрифты и вообще внешний вид chrome inspector настраиваются в

шрифты и вообще внешний вид chrome inspector настраиваются в inspectorSyntaxHighlight.css, если кому-то вдруг интересно : )

Масштабируемая векторная графика / «Док» на SVG/SMIL

Shared by arty
в опере тоже нормально работает
Сегодня я решил поглядеть, на что это будет похоже — сделать MacOS-подобный «док» в SVG, используя элементы SMIL для достижения эффекта увеличения при наведении.

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

Вот результат: SMIL Dock

Скриншот:

[SMIL Dock (скриншот)]

(В оригинале есть ещё и скринкаст. — прим. пер.)

Заметьте, что это демо будет работать как следует только в ночной сборке mozilla-central — сиречь Firefox 3.7 / Gecko 1.9.3 — поскольку прежние версии не поддерживают SMIL.

Tool to Create Browser-Based Games

This looks completely terrific: Effect Games lets you create JS-based browser games, like jump’n’runs, by providing a game/ coding framework, level editor, hosting and sharing options and more. Take a look at their demos and the platformer tutorial to get an impression. [Via Andy.]

[By Philipp Lenssen | Origin: Tool to Create Browser-Based Games | Comments]


[Advertisement] Books about Google available on Ebay

Fixing Django Management Commands

Fixing Django Management Commands. Zachary Voase proposes dramatically improving Django’s management command API for Django 1.3. I’m in favour—management commands are one of the only APIs in Django that I have to look up every single time I use. My optfunc library was written partially with management commands in mind—Zachary favours the argparse library.

Цитата #405275

xxx: на меня библиотека смотрит
yyy: что?
xxx: libgtk+-2.0_0

Web-разработка / Динамичные веб-презентации без использования Flash

Недельку назад Крис Миллс (Opera Software) сказал, что он «планирует серию статей показывающую, что возможно делать „флешеподобные“ вещи, используя только открытые веб-стандарты». Мне показалось это интересным, и, когда я наткнулся на небольшую флеш-презентацию фото-портфолио в журнале Ньюйоркер, то решил проиллюстрировать идею Криса, переделав презентацию. Мне показалось, что с применением Javascript это будет сделать довольно легко, и я решил не искать лёгких путей, и сделать презентацию только используя возможности CSS. Так же мне было интересно попробовать на практике вкусные новинки CSS3, такие как переходы (transitions).
Если вы хотите просто просмотреть демонстрацию, то вам понадобится один из этих браузеров:
Так же прошу извинить за глупый экран параноидальной MyOpera, требующий подтверждения, что вы действительно хотите посмотреть файл. Обещаю не нанести вам или вашему компьютеру вред. :)
Далее следуют некоторые детали имплементации

псы в рапиде: Detexify LaTeX handwritten symbol recognition

псы в рапиде
Detexify LaTeX handwritten symbol recognition - http://detexify.kirelabs.org/classif...
десять минут как дебил рисовал греческие буквы и гыгыкал - псы в рапиде
У-у, он по одному символу распознаёт, так нечестно — что делать с \frac в таком случае, например? А \sum он распознал как \Sigma (и почему я не удивлён?)... - Yuriy Al. Shirokov
О! Не! Во второй раз он узнал \sum! Ну и вообще, крутая штука. И ведь не лень кому-то было сидеть её делать. Диплом чей-то, что ли? - Yuriy Al. Shirokov

Real time online activity monitor example with node.js and WebSocket

Real time online activity monitor example with node.js and WebSocket. A neat exploration of Node.js—first hooking a “tail -f” process up to an HTTP push stream, then combining that with HTML 5 WebSockets to achieve reliable streaming.

Информационная безопасность / Один шаг от пассивной XSS уязвимости до внедрения AJAX червя

Множество раз встречаюсь с мнением что пассивная XSS уязвимость не представляет большой опасности и беспокоиться по этому поводу особо не стоит. И несмотря на то, что отчасти это действительно так(если сравнивать с другими, более катастрофическими ошибками), возможность внедрения своего кода на уязвимый сайт, даже требующая существенных дополнительных действий по обману пользователя может привести к серьёзным последствиям, в частности к возможности полностью перехватить дальнейшие действия пользователя.
Читать дальше →

Цитата #405264

xxx: Переменная "i"
xxx: 26 лет на рынке счётчиков!

Safari, WebKit and alt text for missing images

One of the purposes of the alt attribute is to provide alternate text that can be shown when an image cannot be displayed, either because it is missing or broken, or because the user has disabled images in their (graphical) web browser.

Most graphical web browsers do display alt text in place of missing images, but there is one notable exception: Safari and most other WebKit-based browsers (iCab, Shiira, Chrome). In those browsers, all you get when an image is missing is either a small blue icon with a question mark in it or a broken image icon.

Read full post

Posted in , .

Jeremy Zawodny: A Liberal, Accurate Regex Pattern for Matching URLs

Jeremy Zawodny
A Liberal, Accurate Regex Pattern for Matching URLs - http://daringfireball.net/2009...
arty, Tracy and Andrew Smith liked this
handy little regex - Jeremy Zawodny

Jeremy Zawodny: An Engineer's Guide to DNS

Jeremy Zawodny
An Engineer's Guide to DNS - http://developer.yahoo.net/blog...
ǝuǝƃnǝ, Alex Kapranoff, Dusty Wilson and 3 other people liked this
good background info from YDN - Jeremy Zawodny
Love this article. You solved the "problem" the same way I would have, which is cool. I never really even though about this, but now that it's been presented, I want to (and feel I must) do this test. - Dusty Wilson

Language Detection: A Witch's Brew?

Language Detection: A Witch’s Brew?. The Flickr team make the case for using the Accept-Language header over IP detection to pick a site’s language, with a simple UI for switching languages in case you get it wrong. They’ve been using this for two and a half years without any significant problems.

On HTML extensibility

Mark Pilgrim on IRC in a discussion about RDFa and Microdata: When people say "I want to extend HTML in arbitrary, private, and probably proprietary ways," the appropriate answer is "fuck you" Made me laugh.

Matt Cutts: Reading Paul Vixie on "What DNS Is Not": http://bit.ly/6zdS1y It was in Communications of the ACM this month.

Matt Cutts
Reading Paul Vixie on "What DNS Is Not": http://queue.acm.org/detail... It was in Communications of the ACM this month.

Artem K: Climategate programmer diary http://broadcast.oreilly.com/2009/12/climategate-and-xml.html

Artem K
Climategate programmer diary http://broadcast.oreilly.com/2009...
arty and Alex Kapranoff liked this
One interesting artifact to come out of the stolen Climategate material is an epic file HARRY_READ_ME.txt. It seems to be a year long log by a programmer (Harry?) who has to port old data and various old FORTRAN (and MATLAB?) programs to a new system and compiler, to allow new data series to be added. The old programmers are not available to answer questions. - Artem K

Is There a Looming Battle Over OAuth's Successor?

Is There a Looming Battle Over OAuth's Successor?:

Microsoft, Google and Yahoo! … introduced a competing specification interpreted as being aimed to succeed OAuth, called Web Resource Authorization Protocol, or WRAP

Alexander Zhuravlev: Web 2.1 server-side blink tag demonstration

Alexander Zhuravlev
Web 2.1 server-side blink tag demonstration - http://cheese.blartwendo.com/web21-d...

A developer’s look at Opera Mini 5 beta 2

It’s a great day — Opera Mini 5 beta 2 is now available to download and try out! This article takes you through what’s new in Opera Mini 5 in terms of features and web standards support, and offers some tips for optimizing your web sites for viewing on mobile.

Мелочь в MSDN

В то время как Microsoft позволяет всяким недо-программистам на C# и VB поганить контент по Windows API своими "content fix'ами" (контент, никак, не относящийся к языку как таковому; + показывая их тупейшие рассуждения и комментарии даже в фильтре C++ only), некоторые работники Microsoft вытворяют и сами не хуже (индусы?). Например, вот тут. Смотрим пример из описания функции sendto (это тянется уже порядка 10 лет =).

//---------------------------------------------
  // Set up the RecvAddr structure with the IP address of
  // the receiver (in this example case "123.456.789.1")
  // and the specified port number.
  RecvAddr.sin_family = AF_INET;
  RecvAddr.sin_port = htons(Port);
  RecvAddr.sin_addr.s_addr = inet_addr("123.456.789.1");

Sample все-таки есть sample - он должен компилироваться и работать.

P.S. Если кто не понял - IP-адрес.
← предыдущий месяц