LINUX.ORG.RU

Веб-фреймворк на Objective-C

 ,


0

0

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

Основной проблемой была закрытость Foundation — базового набора классов Objective-C Apple. Веб-фреймвок, ограниченный серверной OSX, мало кому был бы интересен.

После изучения нескольких Opensource-клонов Foundation я остановил свой выбор на Cocotron. MIT-лицензия и хороший набор реализованного API — существенный плюс, но Cocotron разрабатывался как кросс-компилятор для Apple XCode.

FOW (Framework for Objective Web) основан на наборе моих скриптов сборки, позволяющих собрать GCC с патчами Apple (Objective-C 2.0) и Cocotron нативно на линуксе. Сам FOW собирается и работает как на Linux, так и на OSX.

Сегодня у меня был пробный запуск FOW на Linux-сервере (FastCGI через Lighttpd), который завершился полным успехом.

Для Objective-C уже существуют удобные библиотеки ORM и веб-темплейтов (да и CTemplates никто не запрещает использовать). А возможность собрать все это на Linux-машине, возможно, поднимет интерес к Objective-C среди не-эппловодов.

>>> Подробности

★★

Проверено: Shaman007 ()
Последнее исправление: cetjs2 (всего исправлений: 4)

Много велосипедов, хороших и разных.

Почему Си пытаются запихнуть даже туда, где он, казалось бы, не нужен?

post-factum ★★★★★
()

Интересно. Очень. Пойду в ссылку...

mono ★★★★★
()
Ответ на: комментарий от post-factum

> И какая принципиально разница? Это компилируемый язык изначально, системный.

Ага, и C# системный тогда, и питон, и жаба....

Саша, не тролль. Твоя надстройка для ДОСа на паскале еще меньше нужна ;)

Farcaller ★★
() автор топика

И чё? Можно, для самых Ъ, в двух абзацах объяснить кому это надо? Какой-нибудь пример суперпуперности Оbjective-C для веба можно увидеть?

gods-little-toy ★★★
()

>Основной проблемой была закрытость Foundation - базового набора классов Objective-C от Apple.

гхм, гхм. тут получается десятое правило Гринспуна, но по отношению к смолтоку))

код и примеры, примеры и код!

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

> интересная штука. Но чем оно лучше того же http://wiki.gnustep.org/index.php/GNUstepWeb , GNU порта WebObjects?

Cocotron - это не аналог GNUstep, он основан на свежих API Cocoa.

FOW - это не аналог WO, я скорее вдохновляюсь Django и Rails.

FOW и Cocotron распространяются под MIT.

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

>FOW и Cocotron распространяются под MIT.

ну так где исходники? по ссылке нетути.

anonymous
()

Автор - мужик, зачет за суровый ОбжС, моя любовь (обжС, не автор :) Я честно ходил по ссылке, там только три строчки на каком-то не русском языке, скрин Энвиромента (палюсь :() и тест Гет запроса. Народ вопрошает: Билли, где исходники!?!

anonymous
()

Автор в тексте новости упоминает, что есть ORM под Objective-C. Очень заинтересовало, но что-то google даёт мне его найти, все что нашел это
http://code.google.com/p/sqlitepersistentobjects/

Но там поддержки MYSQL, POSTGRESQL нет. Киньте ссылку на ORM, кто знает!

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

Спасибо, буду ждать, удачи тебе в начинаниях! :)

anonymous
()

Нет что бы работать он фигней страдает :) Нада тебя работой пригрузить :)

DeViL
()

Можете вкратце охарактеризовать Objective-C? На что он похож при разработке и чем он является внутри?

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

> Можете вкратце охарактеризовать Objective-C? На что он похож при разработке и чем он является внутри?

Функционален и гибок как С. Полноценный динамический рантайм, смахивающий на питон. Очень приятное ООП.

Cocoa это вообще отдельная песня, одни Cocoa Bindings чего стоят. Но это уже, к сожалению, платформозависимая вещь. Хотя Foundation Cocotron'а тоже радует такими вещами как NSBundle (шикарная вещь для динамических модулей), NSThread (очень удобная обертка вокруг pthreads) и прочим.

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

>выложу на неделе, надо смержить блоб линуксовых патчей.

все-таки, надо было новость после публикации исходников делать. ну а пока было бы интересно услышать, следует ли проект рассматривать как jff и "навязчивую идею", либо вы руководствовались какими-то преимуществами obj-c? я таковых пока не нахожу(может быть потому что знаю язык очень поверхностно): возможность инлайнить сишный код есть у таких популярных языков, как python и ruby, ffi тоже не вчера придумали. ООП-модель obj-c хороша,но ничем не лучше {gnu,squeak} smalltalk, ruby, python. необходимость компиляции может сказаться на продуктивности работы. скорость? тогда интересно было бы глянуть тесты. вобщем, создайте где-нибудь топик, как релизнете код. спасибо.

volh ★★
()

нафига козе баян?

anonymous
()

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

Screwdriver
()
Ответ на: комментарий от volh

> все-таки, надо было новость после публикации исходников делать

патчи на кокотрон уже пошли в тикеты, fow выложу сегодня-завтра (на самом деле он уже лежит на сервере, но в приватной репе).

> либо вы руководствовались какими-то преимуществами obj-c

изначально мне просто было интересно, насколько obj-c'шный рантайм подходит к принципам веб-программирования. Подтолкнула меня к этому необходимость настоящих потоков в веб приложении, что на питоне я реализовать не смог (настоящих == не блокирующих друг-друга в GIL).

Новость на самом деле запостил "на радостях", просто наконец то таки рабочий код на продакшн сервере. Работы еще более чем хватает.

Я хочу сделать из FOW легкий (в плане потребления RAM) и эффективный набор веб-инструментов, который можно было бы использовать так же просто как Django/Rails.

Farcaller ★★
() автор топика

>Сегодня у меня был пробный запуск FOW на Linux-сервере (FastCGI через Lighttpd), который завершился полным успехом.

Поздравляю с выходом на орбиту!

r ★★★★★
()

Сам Objective-C не знаю, но его любителям думаю понравится.

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

похож он на помесь ежа и обезьяны. точнее, обезьяна (C) проглотила ежа (Smalltalk), но подавилась. этот печальный катаклизм в итоге назвали ObjC.

но оно всё равно удобней и элегантней C++.

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

> но оно всё равно удобней и элегантней C++.

устами анонимуса глаголит истина!

Farcaller ★★
() автор топика
Ответ на: комментарий от post-factum

Вдишь ли в чем дело... Интернет развивается почти по закону Мура. И вполне ожидаемо что в высокопосещаемых проектах обычные технологии -- python, php, perl, java уже не справляются с нагрузками. И не все проблемы решаются докупкой железа.

Поэтому сейчас активно развиваются подобные фреймворки - их использование *дешевле* найма стада быдлопрограммистов и покупки очередного датацентра под сервера.

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

Разумеется, все это не нужно для "проектов" типа "я и моя собака".

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

Закон Мура -- миф, но это не важно. Кто сказал, что в инете должны быть только интерпретаторы (суть -- обертки над С)? Почему в игродеве связки С/С++ & Lua живут-поживают (ВоВ, Сталкер и т.д.) -- тьма примеров высокопроизводительных программ, где в основе хардкорное ядро, и скрипты, изменяющиеся без пересборки всего проекта, а в Инете попытки написать что-то подобное всегда вызывают бурю протеста. (по сути же, идея одна и та же) Если бы не велосипедисты, не было бы, к примеру, легких серверов. Да и как язык О-С -- мне нравится. Так что респект автору, а скептикам незачот.

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

>Кто сказал, что в инете должны быть только интерпретаторы (суть -- обертки над С)?

Это потому что каждый пионЭр, написавший глючный сайт с 1000 хитов в день - гуру-вебмастер. А в игродеве либо ты делаешь *работающий* продукт, либо - ты неудачник.

>а в Инете попытки написать что-то подобное всегда вызывают бурю протеста.

Буря только в головах у тех, кто не осилил ничего кроме одного языка (90% - PHP), ничего больше не умеет и искренне считает что то, что работает на 10 000 хитов в день отлично будет работать и на миллионе.

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

>Почему в игродеве связки С/С++ & Lua живут-поживают

Надо переписать WoW на PHP.

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

>Я хочу сделать из FOW легкий (в плане потребления RAM) и эффективный набор веб-инструментов, который можно было бы использовать так же просто как Django/Rails.

Посмотри на презентацию CAS - это фремворк для разработки вебприложений на С++: http://cas.havoc.ru/doc/cas-server.ppt

anonymous
()

Хехе. А есть ещё веб-фреймворк на С++ - witty называется :)

Кстати...

>позволяющих собрать GCC с патчами Apple >А возможность собрать все это на Linux-машине

Что-то я сомневаюсь, что желающих пересобирать не что-нибудь, а gcc, да ещё и накладывая Apple-овские патчи, найдётся большое количество. Особенно на веб-серверах.

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

>Что-то я сомневаюсь, что желающих пересобирать не что-нибудь, а gcc, да ещё и накладывая Apple-овские патчи, найдётся большое количество. Особенно на веб-серверах.

а никто и не будет, ведь результат - исполняемый файл. просто подключаем репозиторий и apt-get update.

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

> А хотя бы в gcc 4.4 будет поддержка objc-2.0?

Даже если и будет - там разные рантаймы, GNU runtime и NEXT runtime не совместимы.

> Что-то я сомневаюсь, что желающих пересобирать не что-нибудь, а gcc, да ещё и накладывая Apple-овские патчи, найдётся большое количество

Собери рядом, если тебе так нужен gcc на продакшн платформе. А вообще туда надо бы только скомпиленный бинарь ложить.

> Посмотри на презентацию CAS - это фремворк для разработки вебприложений на С++

Я не перевариваю C++ если там нет классов на букву Q.

Farcaller ★★
() автор топика

Я правильно понимаю, что этот велосипед с квадратными колесами написан, лишь бы пхп не использовать?

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

> OMG! А в IOKit их нет... :( Вот ведь упущение.

а при чем тут IOKit? Я дрова под OSX особо не пишу...

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

>Я правильно понимаю, что этот велосипед с квадратными колесами написан, лишь бы пхп не использовать?

Дружок, если ты считаешь что на PHP можно написать вебпроект с любой посещаемостью, то твое место - в песочнице.

Видишь ли, если бы ты работал в команде, у которой в активе есть хотя бы один проект с 2M хитов в день, у тебя бы не возник такой вопрос.

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

>> Посмотри на презентацию CAS - это фремворк для разработки вебприложений на С++

>Я не перевариваю C++ если там нет классов на букву Q.

А ты бы посмотрел для общего развития; это полезно, даже не обращая внимания на язык реализации.

OMFG!!! Captcha: makoes

anonymous
()
Ответ на: удаленный комментарий

>Вот скажи, чем тебя обычный С не устроил или плюсы

Ну не нравится человеку С++ и все тут. Хочется ему написать свой фреймворк на Obj-C. В любом случае это лучше чем если бы он стал делать тоже самое на lisp или forth :)

anonymous
()

Вот скажи, чем тебя обычный С не устроил или плюсы
все занимаются сексом, но анальный секс на публике это нарущение

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

> Дружок, если ты считаешь что на PHP можно написать вебпроект с любой посещаемостью, то твое место - в песочнице.

Дружочек, а википедия проект с достаточной посещаемость? Или у вы владеете ресурсом помощней?? Расскажете нам про свои 2M хитов в день и фреймворк на си...

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

> Буря только в головах у тех, кто не осилил ничего кроме одного языка (90% - PHP), ничего больше не умеет и искренне считает что то, что работает на 10 000 хитов в день отлично будет работать и на миллионе.

Вы действительно считаете, что при масштабировании все дело в нативном коде??

Каков процент времени занимает выборка из базы и обработка результатов (на пхп, питон)? Разберитесь с этим, а после тяфкайте.

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