LINUX.ORG.RU

Сообщения RussCox

 

Электромобили: Топливные элементы vs. батареи

Кто на что ставит?

Топливные элементы (toyota mirai): зарядка за 3 минуты, водород превращается в воду и электричество, уходящее на питание электродвигателей, дорогие топливные элементы
Батареи (tesla): долгая зарядка (колхоз, когда на заправке за 2 минуты меняют самую дорогую часть авто на какую-то левую - не рассматриваем), дорогая батарея, в 2 раза больший КПД

P.S.: Маск купил все англоязычные издания. Запрос по сабжу находит кучу публикаций со сравнениями в стиле: топливные элементы стоят X, а батареи на фабрике, которую построит Маск, будут стоить Y; toyota mirai стоит X1, а когда Маск выпустит Tesla 3, она будет стоить Y1; производство водорода в настоящее время ответственно за проблемы экологии X2, а электричество в будущем будет 100% чистым.

 , , , ,

RussCox
()

Хочу запрыгнуть в decentralization bandwagon

Поезд с Bitcoin* уже ушёл. Ethereum** и его «умные контракты» не вдохновляют. Codius*** тоже.

Присматриваюсь к SafeNet. Система основана не на blockchain, а на Kademlia DHT (decentralized hash table) с модификациями для противодействия атаке Sybil. Центральный ledger, как в bitcoin отсутствует (противодействие double spending осуществляется другими методами). Кто-нибудь его уже тыкал палочкой?

Предназначение safenet - переход от централизованного интернета, где данными владеют сервисы (например, Facebook) к подходу, когда пользователь сам решает какими данными и с кем он хочет делиться и как их потом использовать. Информация при загрузке в сеть дробится на куски, шифруется и передаётся определённому количеству нод на хранение. Ноды являются майнерами в терминах Bitcoin и получают safecoins за хранение данных. Часть монет идёт автору программы, которая используется для производства контента.

Самый интересный подход и как раз на той стадии, когда можно нырнуть поглубже. Но есть некоторые аспекты, которые несколько смущают:

  • Компания maidsafe из Швеции якобы пилит всё это с 2006 года. Однако, по состоянию приложений, документации и прочего - это не сильно заметно.
  • Система ещё не запущена в production, идёт 5й тестовый запуск (после каждого все данные удаляют), а они уже выпустили и распродали 30% монет, выручив за них (если не ошибаюсь) 6 миллионов USD.
  • Maintainer'ами ряда реп после привлечения средств (?) сделали krishnaIndia и Rajkumar.
  • Официальный форум - это какой-то раковник. Адекватные люди в сообществе есть, но они по моим ощущениям больше как-то в оппозиции. Кто-то даже форкнуть предлагал. Впечатление отсутствия авторитетных людей, кто бы знал как всё это работает.

Может быть где-то ошибаюсь, всё исключительно результат 2х дневного ознакомления с системой. Но вот как-то так. Идея нравится, а по поводу реализации - сомнения.

  • * Bitcoin - Пиринговая платёжная система. Вся информация о транзакциях в открытом виде записывается в публичный ledger (в какой-то степени - элемент централизации).
    Основана на системе доказательства правильности работы hashcash, предложенной в 1997 году Адамом Бэком. Требует от клиента производить бесполезные вычисления, сжигая сотни нефти электроэнергии. В силу ряда причин (дешёвое электричество и девайсы, низкая оплата труда и т.д.) mining обрёл популярность в Китае. Сейчас 70% всех транзакций проходят через 4 китайские компании.
    Рынок на данный момент - 10.8 миллиардов USD по текущему курсу. Для сравнения, рынок серебра - 14 миллиардов.
  • ** Ethereum - Так же, как и Bitcoin, использует blockchain. К нему припилили самописную (на C++) виртуальную машину, выполняющую самодельный turing полный JS-подобный язык Solidity. И объявили всё это «the world's largest cloud computer».
    Сумма привлеченных на рынок средств составляет эквивалент 116 миллионов USD.
  • *** Codius - Конкурент (?) Ethereum'а от Ripple (компании обслуживающей уже 10 банков, используя p2p для снижения издержек по процессингу межбанковских платежей). Node.js вместо самописной виртуальной машины. И JS в качестве ЯП.

 , , , ,

RussCox
()

Способов изучения немецкого тред

Хочу изучить сабж до состояния, чтоб не стыдно было.

Английский в своё время изучал до определенного уровня зубрёжкой правил, огромного количества слов и часто употребляемых выражений. Затем, имея уже этот базис развивал навыки чтением литературы вслух, прослушиванием радиостанций, просмотром фильмов и общением с носителями.

Повторять подвиг с зубрёжкой больше не готов. Реально без заучивания продвинуться с почти нуля (есть поставленное произношение, умение читать, базовые слова, выражения и какие-то глаголы, которые ещё не успел забыть), учитывая, что возможности погрузиться в среду, как с английским нет?

P.S.: теги «английский», «английский язык» есть, а «немецкий» - нет, пришлось поставить «германия».

 , , ,

RussCox
()

Кодогенерация в Go

Сабж, чем делать? От text/template пригорает уже, даже от модифицированной версии с multiline блоками и прочими плюшками. Формировать ast дерево каждый раз - походу не лучше, много лишнего даже для простейших вещей. Есть готовые решения? Или опять придётся свою абстракцию пилить?

Генерировать приходится много и часто, и хотелось бы как-то от этого процесса удовольствие получать.

 , , ,

RussCox
()

В Японии теперь можно безнаказанно танцевать

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

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

Стоит ли ожидать, что и ЛОР последует примеру Японии?

!Ъ:

Japan finally lifts its 67-year-old ban on dancing
http://www.independent.co.uk/news/world/asia/japan-finally-lifts-its-67yearold-ban-on-dancing-10340816.html

 , , , ,

RussCox
()

WebAssembly: бинарный формат скоро во всех браузерах страны

WebAssembly (https://github.com/WebAssembly/design) is a new format for native programs on the web. It aims to support everything that asm.js supports, but allows the VM to sidestep the JS parsing and profiling pipeline entirely. This is a good thing for the VM - less work to support native code.

Although WebAssembly will have polyfill to asm.js, we should support it natively by:

- Having a WebAssembly baseline JIT that's used for fast start-up and some basic execution count profiling.
- An LLVM backend that uses the FTL's LLVM glue and compiler plan scheduling for hot code.

This standard has broad support, and we should continue to participate in discussions about how to make it great.

https://blog.mozilla.org/luke/2015/06/17/webassembly/
https://brendaneich.com/2015/06/from-asm-js-to-webassembly/
http://blogs.msdn.com/b/mikeholman/archive/2015/06/17/working-on-the-future-o...
https://twitter.com/jfbastien/status/611201861245399041

Сейчас единственный способ писать client-side — использовать JS или любой другой язык, который будет транслироваться в JS. Что геморрно, ибо генерировать JopaScript не очень удобно, да и браузеры не в восторге его парсить. WebAssembly - бинарный формат, который проще как генерировать, так и парсить (Из FAQ: исходники по прежнему можно будет просматривать в читаемом виде в developer tools).

В краткосрочной перспективе (в качестве Proof of Concept или MVP) формат будет пригоден для использования под web С/C++ (языки без GC). При чём, (в том числе) можно будет линковать модули написанные на этих низкоуровневых языках из обычного JS. В дальнейшем планируется добавить поддержку других языков, реализовав garbage collected объекты.

 , , , ,

RussCox
()

Ваши предпочтения относительно метода аутентификации

Есть сайт, использующий Mozilla Persona. Нужно, что-то такое же простое, но способное работать без JS.

  1. Вернуться к классическому «логин + пароль»?
  2. Требовать только e-mail и высылать туда одноразовую аутентификационную ссылку?

Как смотрите на второй пункт? Как считаете, почему мало кто подобным пользуется, интересный же вариант (https://en.wikipedia.org/wiki/One-time_authorization_code#Email)? Насколько это «дружелюбное» решение для пользователей мобил и планшетов?

 , , ,

RussCox
()

Поиска либы тред: абстракция над go/ast, go/parser и go/token

Пишу генератор кода, лень работать с AST, мануально искать нужную мне информацию. Есть готовые библиотеки, позволяющие получить список структур / функций / методов в определенной директории с .go файлами?

 , ,

RussCox
()

XMPP сервер в качестве backend'а

Четыре сиськи в прозрачных платьях хотят халявы на автопати. Сервис модный и молодёжный с WebRTC и Websockets. Концептуально представляет собой нечто кардинально большее, нежели чатик или микроблог. Тем не менее, с целью бесплатного получения готовых клиентских приложений на разных платформах, хочу попробовать приспособить в качестве backend'а - XMPP. Аналитики ЛОРа, стоит ли овчинка выделки? Есть у кого опыт подобного?

 , , , ,

RussCox
()

ЯП со статической типизацией для web'а

  • Hack aka PHP с типами (Facebook)
    <?hh
    class MyClass {
      const int MyConst = 0;
      private string $x = '';
      public function increment(int $x): int {
        $y = $x + 1;
        return $y;
      }
    }
    
    // Generics
    class Box<T> {
      protected T $data;
    
      public function __construct(T $data) {
        $this->data = $data;
      }
    
      public function getData(): T {
        return $this->data;
      }
    }
    
    Фреймворков нет, нужно ставить HHVM.
  • Golang (изначально - side project нескольких сотрудников Google)
    package name
    
    import (
    	"fmt"
    )
    
    func Hello(name string) string {
    	return fmt.Sprintf("Hello, %s", name)
    }
    
    Фреймворков нет. Зато в стандартной библиотеке есть полезные вещи. Хотя, для полноценной разработки их недостаточно.
  • Rust (Mozilla)
    fn main() {
        let program = "+ + * - /";
        let mut accumulator = 0i;
    
        for token in program.chars() {
            match token {
                '+' => accumulator += 1,
                '-' => accumulator -= 1,
                '*' => accumulator *= 2,
                '/' => accumulator /= 2,
                _ => { /* ignore everything else */ }
            }
        }
    
        println!("The program \"{}\" calculates the value {}",
                  program, accumulator);
    }
    
    Едва ли это подходит для веба. Тем более, что фреймворков нет.
  • Java (Oracle)
    // Мы все с вами знаем, как выглядит Java код.
    
    Получше с готовыми компонентами. Но, Java же для посредственностей (см. авторитетное мнение ЛОРовца Paul Graham'а, который не использовал, но осуждает, потому что «хорошую книгу можно узнать по обложке»). Ну и вы сами всё знаете.
  • Scala
  • Haskell

За чем светлое будущее, товарищи?

 , , , ,

RussCox
()

Что есть golang way?

Хочу у себя в приложении модельку, которая так же будет использоваться для валидации входных параметров и генерации форм. Для примера, имеется структура:

type User struct {
	Name string  `params:"minlength=2,maxlength=32,required"`
	Age  int     `params:"min=13,max=150"`
	GPA  float64 `params:"min=1,max=4.0"`
}
Парсим её и получаем данные о каждом из полей. Используем эту информацию сначало для того, чтобы сгенерировать форму. А потом при сабмите этой формы - для её валидации.

Проблема в том, что тэги полей (см. `...`) - это обычный string (хотя, наверное, было бы круто, если бы они имели чуть больше общего с java annotations). Стало быть, при таком подходе статической типизации и compile time проверки их корректности не будет, что не очень хорошо.

Как вариант, можно проверять всё это при запуске программы и заваливаться с panic, если параметры неверные. Т.е. по принципу fail early. Но насколько это канонично и golang вэйно?

 , , ,

RussCox
()

RSS подписка на новые темы