← июль 2011
В то время как ученые пытаются победить грипп с помощью антител, хочется написать про другие антиштуки, которые развлекают и заставляют задуматься.
Месяц-полтора назад в блогах стал пиариться сайт antibooking.com, с дизайном, скопированным с booking.com.
vs.
Потом сайт закрылся и месяц показывал дисклеймер:
И, наконец, появился твит, сообщающий о том, что сайт возобновил работу (хотя на самом деле собирается только с 1 августа).
Заходим и видим новый логотип и новый текст.
(Здесь нужно удивиться способности гуглового переводчика, который без напряжения продирается сквозь текст в смешанной кодировке.)
Отдельное внимание привлекает логотип. Если раньше это было заимствование логотипа booking.com,
vs.
то теперь логотип создан по мотивам логотипа Почты России:
vs.
Впрочем, если зайти на новую, еще не открытую версию сайта, то почтовый мотив на лицо:
Вы можете спросить, как я узнал адрес нового сайта. А в Яндексе:
Ни одной ссылки на new.antibooking.com в интернетах нет, а в основном поиске Яндекса она уже есть. Откуда? Можно предложить разные варианты, особенно на фоне недавних скандалов с смсками и документами, но в кеше Яндекса есть даже версия, которую вряд ли кто-то специально туда отправил бы:
Яндекс-метрики там нет, а учитывая дизайнерские способности и умение создателей сайта работать с кодировками, хочется предположить и наличие Яндекс-бара на их компьютере.
internet, yandex, booking, design, copy-n-paste, russianpost — 30 июля 2011
Я почти никогда не пишу в этот блог о программировании, поэтому есть повод написать. Берем сортировку методом пауз, язык программирования Go и смотрим, как там можно применить встроенную в язык параллельность, каналы и горутины.
package main
import(
"fmt"
"time"
)
var get_value chan int
func send_value(x int) {
time.Sleep(int64(x) * 1E8)
get_value <- x
}
func main() {
values := []int{3, 1, 9, 7, 2, 6, 4, 8, 5, 10}
get_value = make(chan int)
for _, x := range values {
go send_value(x)
}
for range values {
fmt.Println(<- get_value)
}
}
Самое большое умиление (изумление?) — отказ компилятора самостоятельно расширять типы, например, попытка умножения int на int64 приводит к ошибке компиляции.
Конструкция с переменной _ и оператором range — типовой подход для обхода массивов без счетчиков.
Очень приятный (хоть и по-паскалевски выглядящий) оператор :=, который позволяет немного экономить на объявлении типа переменной.
Ну а за реализацию конкурентных вычислений — респект и уважуха.
go, programming, fun, algorithm — 3 июля 2011
← июль 2011