jQuery vs Google Closure

function select(elem, f) {
    elem.toggleClass('tab-selected', f);
    $('#' +'link')).toggle(f);

$('.tab-button').each(function () {
    select($(this), $(this).hasClass('tab-selected'));
    $(this).click(function () {
        select($(this).closest('.tab-header').find('.tab-selected'), false);
        select($(this), true);

Google Closure:
function select(elem, f) {
  goog.dom.classes.enable(elem, 'tab-selected', f);, 'link')), f);

goog.array.forEach(goog.dom.getElementsByClass('tab-button'), function (cmdTab) {
  select(cmdTab, goog.dom.classes.has(cmdTab, 'tab-selected'));,, function () {
    goog.array.forEach(goog.dom.getElementsByClass('tab-selected'), function (cmdCurrTab) { select(cmdCurrTab, false); });
    select(cmdTab, true);

Несмотря на то, что я категорически не согласен с известной явно проплаченной статьёй, где автор пытается двумя с половиной багами доказать, что Closure трогать не стоит, и jQuery так-то ещё то говно, но всё же не стоит.

UPD. Собсно, мне прояснили, что

Туда и обратно

#include <iostream>
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
using namespace std;

template <typename T> istream & operator >> (istream & i, back_insert_iterator<T> & b) {
    typename T::value_type x; if (i >> x) b = x; return i;

int main() {
    vector<string> w; while (cin >> *back_inserter(w));
    copy(begin(w), end(w), ostream_iterator<string>(cout, " "));

А можно просто банить всех, у кого не 0?

Оригинал взят у wizzard0 в Срачиометр
Оригинал взят у dargot в Вынесу-ка из комментов:


В ЖЖшечке давно пора заставить всех принудительно анкету заполнять, пунктов эдак из ста, оценивая свою позицию в баллах (2,1,0,-1,-2) по шкалам:

Политический раздел:
За СССР / Против совков
За национал-социализм / Против нациков
За демократию / Против дерьмократов
За либерализм / Против либерастов

Национальный раздел:
За евреев / Против жидов
За кавказцев / Против чурок
За украинцев / Против хохлов
За русских / Против москалей

Половой вопрос:
За геев / Против п.доров
За женщин / Против баб
За мужчин / Против мужиков

Ну и так далее, по всем дисциплинам Специальной Олимпиады - легалайз, курение, собаки, автомобили, чайлдфри, аборты, копирайт, линукс, прививки...

И результаты, соответственно, показывать при наведении курсора на юзерпик - "СО-Профиль пользователя совпадает с Вашим на 72%, основные отличия - по гееп.дорской (2 балла против Ваших -2) и женобабской шкалам (-2 балла против Ваших 1) шкалам." Сразу ясно - стоит ли на человека вообще тратить время, какие темы с ним лучше не обсуждать, как его троллить.

Прошу считать данный пост официальной просьбой администрации ЖЖ:D

С уважением, Dargot.

P.S. Update. А еще лучше будет прикрутить спец.алгоритм, который по употребляемой лексике и адресатам сообщений пользователя будет проставлять ему этот рейтинг автоматически. "Вам присвоен рейтинг геезащитника", так как-то. Особые лулзы доставит сравнение СО-Профиля пользователя по его представлениям и автоматически вычисляемого:)


There's is an amount of sources stating there's an industry-wide movement into "semantisation" of Web. I'd like to tell you (in case you don't know it yet) that's just a blatant lie.

Consider HTML. There's a shameful mix of makeup elements (div, span, i, b, pre, em, strong, p), semantic elements (kbd), user controls (input) and information about how to process actions (form, label). There's no certainity at all on what does it mean to write a tag. In case one would like to go really sematic, it could be done in the following way (keeping as much existing infrastructure as possible). Common web page is just an XML with only the data that are significant for that page. It has xml-stylesheet processing instruction. Linked XSLT contains several (intersecting) levels of mapping of those data into low-level makeup. CSS, ids and classes should never show at any stage of desugaring. The possible levels are (in order of increasing level)

  1. Give browser instructions to show the page and make UI (tag: span, screen, article, grid, row, cell, padding, spring, ellipsis; attr: link, xlink).

  2. Tell what kind of information is shown (kbd, paragraph, sentence, term, em, header, list, person).

  3. Tell what kind of UI is shown (spoiler, splitter, tree, datagrid, editor, toolbar, navbar).

There's just no way to create a Semantic Web until we don't start writing it in a consistent semantic way.

The problem of this approach is that one has to somehow manage dynamic content on page, while exposed DOM is the one of the already transformed XML. There was some movement towards standardisation of DOM access to the source XML, but it haven't got enough support.

In case we would ever be ready to forget all that HTML/CSS/JS stuff as a nightmare, there are even better approaches. We could finally make web based on extensible binary protocols (like protobuf). It would solve all the problems of minification: there wouldn't be a single name of CSS class, space character in HTML or identifier in JS.

It's easy to intercept page loads

While looking for a way to make an addon for better web experience, I found these articles:

So, I can stop the page from loading even before it actually makes any HTTP request. For example, instead of Yandex front page (213,8 KiB) I can show prepared input field, which loads in approx. 0 seconds, and takes 0 bytes of traffic. These're the good news, aren't they?

(no subject)

TIL that Ubuntu 13.10 is not a target for GHC. There's just no way to install it without removing half of the system libraries. At least, no easy way. Though I've successfully installed it in a few clicks via Haskell Platform in a Windows under VM. So, beware: there're potentailly only 3 good Linux distribs: NixOS, ArchLinux, Gentoo. It's damn right time to check these out.

Lambda methods

There's an annoying problem in PHP, JS and other languages with OOP and lambda functions: this keyword in a lambda defined in some method. Lambda function's scope differs from method's scope: there's just no this. Even worse, methods and fields may be declared private in PHP, so if we somehow pass this into lambda function, we still won't be able to access those fields and methods. I suppose the most significant reason for this is that methods are not just functions, and using function keyword for them is a misnomer. Methods are functions with one more implicit parameter named this (in C++ world it's called "thiscall" calling convention).

So why don't we call them method etc.? Then if we saw
class Test {
    private $x;
    method f() {
        return g(method() {
            return $this->x;

we would be sure that lambda method took the same this as its enclosing method, and the problem would disappear. In case of Javascript, library authors (e.g. Google) wouldn't have to create optional arguments to take something that would be substituted as this for callback function.

There's something wrong with our industry if we don't see it.

(no subject)

Tabs Outliner я собирался написать сам, а он уже, оказывается, написан.

Суть в том, что это не просто древовидные вкладки в браузере, это ещё и нотесы, где можно сохранить ссылки, доки или кусок текста.