LINUX.ORG.RU

Mozilla Phones for Apps

 , , ,


2

2

В попытке подстегнуть разработку программ под свою операционную систему, компания Mozilla приняла решение раздавать телефоны Geeksphone Keos бесплатно для разработчиков ПО под нее.

Акция Phones for Apps напоминает похожие акции от Nokia в прошлом, которые позволили в свое время развить экосистему MeeGo/Maemo.

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

Форма для заявки

>>> Официальный анонс Phones for Apps

Deleted

Проверено: Shaman007 ()

Ответ на: комментарий от special-k

Здорово! Работает. Но в интернетах пишут, что __proto__ — deprecated, так что не пойдёт :(

Binary ★★★★★ ()
Ответ на: комментарий от Binary

Ты сейчас не понимаешь пространств «класса» и объекта в js, потому не можешь осилить наследование, при этом мне питон не нужен, а тебе js нужен, и кто из нас буратино, скажи мне.

special-k ★★★ ()
Ответ на: комментарий от special-k

Так зачем всё мешаешь в одну кучу? Класс — определяет, как создаются объекты. Поэтому если хочешь изменить поведение _всех_ объектов этого класса — меняй класс. Где ты узрел нелогичность?

Binary ★★★★★ ()
Ответ на: комментарий от special-k

Я то всё прекрасно понимаю, просто приемлимого пути решения проблемы в js не существует. От тебе и гибкость прототипов во все поля.

Binary ★★★★★ ()
Ответ на: комментарий от special-k

Ну и ещё: не нужен тебе питон — не используй его на здоровье, но зачем тогда с умным видом рассуждать, какой он непутёвый?

Binary ★★★★★ ()
Ответ на: комментарий от Binary

но js без отладчика использовать абсолютно не готов

А я вообще не готов использовать js напрямую. Ни с отладчиком, ни без. Ужасный язык с невыносимым количеством «бордерплейта».

Кстати, а что мне юнит-тесты то, трейсбеки дадут в оттранслированном коде, и что с ними делать?

Зачем смотреть в оттранслированный код, если есть исходник?

Если же проблема заключается в оттранслированном коде, а не в вашем исходнике, то это проблема Coffeescript'a. В этом случае следует создать issue, чтобы проблему нашли, опять же, используя тесты.

Но со мной такого ни разу не случалось, всегда все транслируется корректно. Я даже sourcemaps еще не пробовал использовать по этой причине. special-k, пригодились?

Anatolik ★★ ()
Ответ на: комментарий от Binary

Но в интернетах пишут, что __proto__ — deprecated

Я тебе уже привел цитату, что он наоборот признан в ecmascript6, хоть и опционален. Вряд ли кто-то будет выпиливать его поддержку, но, можно обойтись и без, если ты будешь хранить все данные класса в отельном атрибуте в виде цельного объекта, тогда с помощью Object.create будешь спокойно наследовать.

special-k ★★★ ()
Ответ на: комментарий от Binary

Где ты узрел нелогичность?

Смотри

Класс — определяет, как создаются объекты.

объекты реализуют свой функционал.

Как два этих назначения связаны - никак. Так какого лешего свойства класса и объекта - это одно и то же, непонятно.

special-k ★★★ ()
Последнее исправление: special-k (всего исправлений: 2)
Ответ на: комментарий от lucentcode

Вот мне и интересно было, понятно что скриптовые языки там быстро появятся, а вот что с компилируемыми.

loz ★★★★★ ()
Ответ на: комментарий от special-k

Как две эти функции связаны - никак. Так какого лешего свойства класса и объекта - это одно и то же, непонятно.

Ещё раз: почитай про MRO, мне не хочется рассказывать тебе про ООП.

Binary ★★★★★ ()
Ответ на: комментарий от special-k

Питон при обращении к аттрибуту объекта если не находит его в самом объекте, ищет по аттрибутам класса (точнее цепочки наследования).

PolarFox ★★★★★ ()
Ответ на: комментарий от Anatolik

Так я ж говорю: тесты будут запускаться js-движком, соответственно, и трейсбеки будут давать в оттранслированном коде, и как дальше жить?

Binary ★★★★★ ()
Ответ на: комментарий от Binary

Дык, если a.x == undefined, то можно сказать, что св-ва то и нет?

Вообще-то свойство то и есть и имеет значение - undefined.

Или как тогда проверять? hasOwnProperty?

if («x» in a) ...

r ★★★★★ ()
Ответ на: комментарий от special-k

цитату

Источник, пожалуйста.

тогда с помощью Object.create будешь спокойно наследовать.

Object.create будет не наследовать, а копировать, эт не то.

Binary ★★★★★ ()
Ответ на: комментарий от Anatolik

Зачем смотреть в оттранслированный код, если есть исходник?

Потому что динамический язык который генериться из динамического языка склонен порождать такие ишибки с типищацией или NPE которые без жертвоприношений быстро не поймаешь.

r ★★★★★ ()
Ответ на: комментарий от Binary

Мой недогадливый недоверчивый друг

var Plugin1 = function(){console.log('ia plugin')};
//классовые методы
Plugin1.metainformaciyayi = {}
Plugin1.metainformaciyayi.m1 = 'метаинформация1'
Plugin1.metainformaciyayi.m2 = 'метаинформация2'
//объектные методы
Plugin1.prototype.v1 = 1
Plugin1.prototype.v2 = 2

//наследуем поочередно

////1. сначала функцию конструктор (в js не существует понятия super)
var Plugin2 = function(){
  Plugin1.apply(this, arguments)
};

////2. затем наследуем метаинформацию
Plugin2.metainformaciyayi = Object.create(Plugin1.metainformaciyayi)

////3 прототип "объекта"
Plugin2.prototype = Object.create(Plugin1.prototype)

//проверяем наследуемость
Plugin1.metainformaciyayi.m3 = 'метаинформация3'
Plugin2.metainformaciyayi.m4 = 'метаинформация4'
console.log(Plugin2.metainformaciyayi.m3) //наследовалось
console.log(Plugin1.metainformaciyayi.m4) //пусто
console.log((new Plugin2).v1)

special-k ★★★ ()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от r

конечно.. -_- интерпретатор тыкает тебя носом в место ошибки и все сразу ясно.

special-k ★★★ ()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от special-k

интерпретатор тыкает тебя носом в место ошибки и все сразу ясно.

Ага, В фигню типа __ref64 undefined. И смотришь в гору генерированных исходников и медитируешь - а что же это может компилится в _ref64 чтобы понять, а что собственно undefined.

r ★★★★★ ()
Ответ на: комментарий от special-k

О, это уже что-то. Правда, если это не костыль, то что? :)

Binary ★★★★★ ()
Ответ на: комментарий от Binary

Конструирование объекта, причем такое, какое ты сам хочешь.

Cделай теперь функцию createPluginClass, чтобы работала, например, так

var Plugin2 = createPluginClass(Plugin1, function(){ Plugin1.apply(this,arguments) })

и наслаждайся.

special-k ★★★ ()
Последнее исправление: special-k (всего исправлений: 3)
Ответ на: комментарий от special-k

Там тоже с поддержкой браузерами не всё гладко, оно только в js 1.8.5 появилось. Но уже хоть что-то.

Вот и получается, что в js каждый тащит для себя какой-то костыль для того, чтобы можно было как-то имитировать нормальное ООП. А за что хвалят прототипы — так никто и не раскололся, почему-то.

Binary ★★★★★ ()
Ответ на: комментарий от Binary

О, это уже что-то. Правда, если это не костыль, то что? :)

Вообщето вызывать в наследном классе классовый метод парента чери именование наследника - это извращение без какого-либо практического смысла.

r ★★★★★ ()
Ответ на: комментарий от r

Смысл простой: оставить у плагина депенденсы, как у родителя, если не указано иного.

Binary ★★★★★ ()
Ответ на: комментарий от Binary

чтобы можно было как-то имитировать нормальное ООП

Наследовать классовые методы - это никакого отношения к «нормальному ООП» не имеет.

r ★★★★★ ()
Ответ на: комментарий от Binary

Ты не видишь ситуации в целом. В js явные прототипы, в питоне неявные. Класс это и есть прототип объекта в питоне (и это не правильно с м.т.з.). В руби прототип объекта как бы внутри класса, при этом есть прототип самого класса, т.е. для объекта отдельный прототип так же как и в js, но опять же неявно. Здесь все явно, делай что хочешь, прототип внутри, прототип снаружи.. генерируй прототип налету.. и т.п., в общем, если в др ЯП все прибито гвоздями, то здесь нет. И все начинает зависеть от рук.

special-k ★★★ ()
Последнее исправление: special-k (всего исправлений: 2)
Ответ на: комментарий от r

Так и без классовых методов: у каждого свой костылик.

Binary ★★★★★ ()
Ответ на: комментарий от special-k

Так то оно, может, и так, только вот где он, хороший код на прототипах? Дайте взглянуть?

Я вот с примером на Object.create так полностью и не разобрался: как потом в методах глядеть эти свойства правильно? Чтобы если метод из Plugin1 вызван из Plugin2, то он видел метаинформацию от Plugin2?

Binary ★★★★★ ()
Ответ на: комментарий от r

Учитывая, что сабж сравнивается с питоном, в котором, «классовые» методы добавляются к объекту, все становится особенно забавно.

special-k ★★★ ()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от r

Вообще, наверно, сделаю отдельно структуру с метаданными, да буду передавать в конструктор при инстанцировании. Просто в питоне я бы обошёлся просто классом, по мне так удобно.

Binary ★★★★★ ()
Ответ на: комментарий от special-k

Я то хотя бы свой синдром утёнка не замалчиваю ;)

Binary ★★★★★ ()
Ответ на: комментарий от special-k

Хто? Хороший код? Когда? А то уж полночь близится.. :)

Binary ★★★★★ ()
Ответ на: комментарий от Binary

Только ты пойми, что это разные пространства, объект и «класс», т.е. у объекта нет метаданных, к ним надо обращаться более явно: this.constructor.metainformaciyayi.m3 (если из объекта). А из класса this.metainformaciyayi.m3

special-k ★★★ ()
Последнее исправление: special-k (всего исправлений: 2)
Ответ на: комментарий от special-k

Я понимаю, так и делаю через constructor, но почему-то получаю всё равно от Plugin1. Сам не пойму, чё такое.

Binary ★★★★★ ()
Ответ на: комментарий от special-k

Нет, инстанцируюсь от Plugin2:

p2 = new Plugin2();

а потом

Plugin2.meta.m1 = 'plugin2'
p2.constructor.meta.m1 // даёт объект из Plugin1

Binary ★★★★★ ()

А что, кто-то ещё по доброй воле пользуется изделиями мозиллы?

alex-w ★★★★★ ()
Ответ на: комментарий от alex-w

Я пользуюсь, ибо вимператор.

Да и громоптице конкрурентов нет.

Binary ★★★★★ ()
Последнее исправление: Binary (всего исправлений: 1)
Ответ на: комментарий от Binary
////3 прототип "объекта"
Plugin2.prototype = Object.create(Plugin1.prototype)
Plugin2.prototype.constructor = Plugin2
special-k ★★★ ()
Ответ на: комментарий от special-k

Ну нафиг, надоело это ковырять, я уже на диван ушёл валяться, лучше сделаю структуру уровнем выше, будет проще. Не везде можно как в питоне, придётся смириться :)

Binary ★★★★★ ()
Ответ на: комментарий от special-k

И Б-г бы с ним, с жс, так ведь куда ж от него денешься? Я б даже руби лучше б юзал, ей богу.

Binary ★★★★★ ()
Ответ на: комментарий от lucentcode

Только ему это всё равно не поможет. У пестона нет будущего. В пестоне, например, нельзя дополнять встроенные типы (строку например), что сводит на нет полезность данной фичи. Она как раз и нужна главным образом для этого, в остальных случаях её полезность невелика. Вообще пестон производит впечатление убогой недоделки. Одно смешение код конвеншнов в стандартной либи о многом говорит. То ли дело руби. Тут это ровно и красиво.

anonymous ()
Ответ на: комментарий от iVS

Акция Phones for Apps напоминает похожие акции от Nokia в прошлом, которые позволили в свое время развить экосистему MeeGo/Maemo.

Где здесь Qt?

thesis ★★★★★ ()
Ответ на: комментарий от tp_for_my_bunghole

Всё мобильное ПО должно бытъ на компилируемых в машинный код языках со строгой типизацией.

Ага, а писать его должен исключительно Линус в целях экономии батареи.

Alsvartr ★★★★★ ()

Всё же с бОльшим интересом жду Убунтофон.

Акция Phones for Apps напоминает похожие акции от Nokia в прошлом, которые позволили в свое время развить экосистему MeeGo/Maemo.

Они много лет пилят небольшую ОС, сколько же времени мозилловцам надо будет на создание экосистемы?

Stalin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.