На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (66) « Первая ... 57 58 [59] 60 61 ...  65 66  ( Перейти к последнему сообщению )  
> JS и его "недостатки"
    Дайте, пожалуйста, ссылки на ужасные примеры JS, вроде тех, что приводятся на презентациях КофеСкрипт и других, решающих проблемы JS языках.
      Red
      http://habrahabr.ru/post/131714/ для затравки, вместо

      class A extends B
        Serafim, так в новом js'е же будут классы?
          Serafim, а не помнишь что-нибудь по приведению типов, проверок на равенство?
            Цитата Red @
            Serafim, а не помнишь что-нибудь по приведению типов, проверок на равенство?

            приведение типов только одно:
            undefined -> void 0;

            проверка на равенство:
            is -> ===
            isnt -> !==

            как пример:
            кофе
            ExpandedWrap disabled
              a = (b) ->
                if b isnt undefined then 1 else 'asdasd';


            js
            ExpandedWrap disabled
              var a = function(b) {
                if (b !== void 0) {
                  return 1;
                } else {
                  return 'asdasd';
                }
              };


            Добавлено
            Цитата D_KEY @
            Serafim, так в новом js'е же будут классы?

            не JS, а EcmaScript 5, т.е. где-то лет через 10 можно будет наконец подумать об их использовании :yes:

            Добавлено
            Не думаю что это будет серьёзным нарушением трудового договора, запощу кусок кода на кофе, который писал я:
            ExpandedWrap disabled
              ###
                Класс соединения с сервером
              ###
              class Connection
                # Время реконнекта при обрыве соединения
                @RECONNECT_TIMEOUT  = 60000
                # Отображать ли логи сокета
                @SHOW_LOGS          = true
               
               
                ###
                  Сообщения логов
                  @string: Logs
                ###
                @LOG_CREATE         = 'Создание соединения:'
                @LOG_OPEN           = 'Выполнено подключение к сокету.'
                @LOG_CLOSE          = 'Отклюение от сокета.'
                @LOG_ERROR          = 'Сервер не отвечает.'
                @LOG_RECONNECT      = 'Переподключение к серверу после ' + @RECONNECT_TIMEOUT + ' миллисекунд.'
                @LOG_INPUT_MESSAGE  = 'Ответ сокета:'
                @LOG_OUTPUT_MESSAGE = 'Отправка сообщения:'
                @LOG_SET_TIMEOUT    = 'Смена таймаута переподключения к серверу: '
               
                ###
                  Ошибки
                ###
                @ERR_MESSAGE_SEND   = 'Невозможно отправить сообщение. Нет подключения к серверу.'
                @ERR_SOCKET_CLOSE   = 'Невозможно закрыть соединение. Соединение отсутствует.'
               
                ###
                  Статусы сокета
                  @string: Status
                ###
                @STATUS_CLOSED      = 'STATUS_CLOSED'
                @STATUS_CONNECTED   = 'STATUS_CONNECTED'
               
               
                ###
                  Создание нового соединения
                  @string host: Адрес соединения
                  @string id: Идентификатор соединения
                  @return object Connection
                ###
                constructor: (host, id = undefined) ->
                  # Кодировать ли данные сокета
                  @encode   = true
                  #
                  # ID соединения
                  @id = if id is undefined then id = Utils.uniqueId('', 4) else id
                  # Хост (адрес) соединения
                  @host     = host
                  # Объект соединения
                  @channel  = {}
                  # Триггеры
                  @triggers =
                    onopen:   []  # открытие
                    onclose:  []  # закрытие
                    onmessage:[]  # входящее сообщение
                    onreconnect: []
               
                  # Одноразовые триггеры (срабатывают один раз)
                  @onceTriggers =
                    onopen:   []  # открытие
                    onclose:  []  # закрытие
                    onmessage:[]  # входящее сообщение
                    onreconnect: []
               
                  # Текущий статус соединения
                  @status   = Connection.STATUS_CLOSED
               
                setReconnectTimeout: (time) ->
                  @log(Connection.LOG_SET_TIMEOUT, time)
                  Connection.RECONNECT_TIMEOUT = time
               
                ###
                  Подключение к серверу
                  @callable cb: Коллбек на откртие
                ###
                connect: (cb = (->))->
                  @log(Connection.LOG_CREATE, @host)
                  delete @channel
                  @channel = new WebSocket(@host)
               
               
                  @channel.onopen = (event) =>
                    @log(Connection.LOG_OPEN, event)
                    @status   = Connection.STATUS_CONNECTED
                    cb()
                    @triggers.onopen.each (foo) -> foo(event)
                    @onceTriggers.onopen.each (foo) -> foo(event)
                    @onceTriggers.onopen = []
               
               
                  @channel.onmessage = (event) =>
                    message = if @encode then Utils.decodeData(event.data.replace(/\n/g, '')) else event.data
                    @log(Connection.LOG_INPUT_MESSAGE, message)
                    @triggers.onmessage.each (foo) -> foo(message)
                    @onceTriggers.onmessage.each (foo) -> foo(message)
                    @onceTriggers.onmessage = []
               
               
                  @channel.onclose = (event) =>
                    @log(Connection.LOG_CLOSE, event)
                    @status   = Connection.STATUS_CLOSED
                    @triggers.onclose.each (foo) -> foo(event)
                    @onceTriggers.onclose.each (foo) -> foo(event)
                    @onceTriggers.onclose = []
               
                    # RECONNECT
                    @log(Connection.LOG_RECONNECT, @host)
                    if @reconnectTimeout then clearTimeout(@reconnectTimeout)
                    @reconnectTimeout = setTimeout =>
                      delete @reconnectTimeout
                      @reconnect(event)
                    , Connection.RECONNECT_TIMEOUT
               
                ###
                  Переподключение соединения
                  @return $this
                ###
                reconnect: (event) ->
                  if @status is Connection.STATUS_CONNECTED
                    @channel.close()
                  else
                    @connect()
                  @waitOpen =>
                    @triggers.onreconnect.each (foo) -> foo(event)
                    @onceTriggers.onreconnect.each (foo) -> foo(event)
                    @onceTriggers.onreconnect = []
                  return @
               
                ###
                  Добавление триггера на открытие соединения
                  @callable trigger: Коллбэк
                  @return $this
                ###
                onopen: (trigger) ->
                  @triggers.onopen.push trigger
                  return @
               
                # @alias onopen: Срабатывает только один раз
                waitOpen: (trigger) ->
                  @onceTriggers.onopen.push trigger
                  return @
               
                ###
                  Добавление триггера на переподключение соединения
                  @callable trigger: Коллбэк
                  @return $this
                ###
                onreconnect: (trigger) ->
                  @triggers.onreconnect.push trigger
                  return @
               
               
               
              ########## И Т.Д. ############



            Кто бы что не говорил, но это нагляднее и круче всяких там JS, просто нужно привыкнуть :whistle:
              Отклюение от сокета говоришь...
                Цитата Uncle_Bob @
                Отклюение от сокета говоришь...

                Это еще не самое страшное... Я как то написал "сумка" без буквы мэ.. Хорошо было когда программа выдала "Сумка не найдена" ))
                  Да и сам термин "отключение от сокета" странный. Есть открытие сокета, закрытие...
                    Правильно будет: отлучение от сокета.
                      Цитата applegame @
                      Правильно будет: отлучение от сокета.

                      Лечится экзарцизмом?
                        Да мне пофигу, пусть хоть отречение - это логгирование всего-лишь
                            Цитата Астарот @

                            Боянчик, но смищной.
                              [FAQ] Coffee, другой JS :) Набросал небольшой обзорчик, просьба не тыкать сильно палками, если только конструктивно
                                На кол Якина! :)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (66) « Первая ... 57 58 [59] 60 61 ...  65 66


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1498 ]   [ 14 queries used ]   [ Generated: 25.08.26, 04:08 GMT ]