Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 31.05.2014, 17:15
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

dmitry111, мне кажется ты просто не понимаешь, что ты хочешь.
Почитай книжечку по простому С и сразу разберёшься

А вообще есть в JS тип Array Buffer, который представляет из себя контейнер для произвольного бинарного буфера фиксированной длины, но работать с этим нельзя, т.к. нужно иметь представление о том, что же лежит в этой области памяти.

Для этого есть специальные представления, вроде: Uint8Array (массив положительных 8-ми битных целых чисел), StringBuffer (массив символов), Blob (API для представления производного бинарного файла) и т.д. т.е. некоторое "нечто" которое лежит в памяти мы представляем как уже более абстрактное представление, с которым можно работать.

Зачем это всё нужно? Для написания эффективных и быстрых приложений, там где это критично, например при работе с графикой. Или же нужно открыть в браузере какой то файл, который не поддерживается из коробки браузером, например, файл Word или проиграть аудио в формате Flac - т.е. работаем напрямую с бинарным файлом и пишем "драйвер" для работы с АПИ браузера, например в FF просмоторщик PDF работает именно так.

Цитата:
Есть еще BLOB
Там ещё много чего есть, правд не всё реализовано. Например на подходе "структуры", знакомые тем кто пишет на С/С++ и разумеется можно будет создавать массив структур.

Пример использования Blob:

var code = new Blob(["alert('hello world');"], {
    type: 'application/javascript'
});

var script = document.createElement('script');
script.src = URL.createObjectURL(code);

document.head.appendChild(script);
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 31.05.2014 в 17:47.
Ответить с цитированием
  #12 (permalink)  
Старый 31.05.2014, 17:49
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сообщение от kobezzza
dmitry111, мне кажется ты просто не понимаешь, что ты хочешь.
Почитай книжечку по простому С и сразу разберёшься

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

Поэтому нужно их максимально сжать перед отправкой и разжать по прибытию)

Вот думал использовать Typed Array с вебсокетами.

Ну а книжку по Си изучать это конечно нужно, но ради двух функций неохота)


Я когда на gamedev.ru показал приблизительный объем данных приходящий на клиент на один тик:

[
  // game
  [
    [
      [1, 2],
      {
        '1': [64, 320, 0, 0, 1, 'bob'],
        '3': [736, 320, 180, 0, 2, 'jek'],
        '5': null
      },
      true
    ],
    [
      [3],
      {
        '1': [
          [190, 72],
          [10, 4],
          [100, 24]
          [332, 94],
          [390, 72],
          [159, 334]
        ],
        '3': [
          [100, 320],
          [120, 320],
          [130, 320],
          [140, 320],
          [339, 44],
          [300, 994]
        ]
      },
      false
    ]
  ],

  // coords [x, y]
  [400, 320],

  // panel
  [97, 777, 3],

  // stat [tBodies, tHead]
  [
    [
      [6, 0, ['bot 6', '', 5, 1], 0],
      [1, 0, ['bot 1', 'dead', 2, 3], 0],
      [4, 0, ['bot 4', '', 0, 4], 0],
      [3, 1, ['bot 3', 'dead', 2, 0], 0],
      [8, 1, ['bot 8', '', 1, 10], 0],
      [23, 1, ['bot 23', '', 1, 8], 0],
      [12, 1, ['bot 12', 'dead', 1, 7], 0],
      [33, 1, null, 0],
      [17, 2, ['bot 17'], 0],
      [64, 2, ['bot 64'], 0],
      [19, 2, null, 0]
    ],
    [
      [0, [3, '', 20, '']],
      [1, [4, '', 30, '']]
    ]
  ],

  // chat [name, text]
  ['User', 'Hello World!'],

  // vote [vote, data]
  [
    'ban',
    [
      'Забанить пользователя User?',  // 0: title
      ['Да', 'Нет'],                  // 1: values
      null                            // 2: next
    ]
  ]
]


они ужаснулись))

Последний раз редактировалось dmitry111, 31.05.2014 в 17:54.
Ответить с цитированием
  #13 (permalink)  
Старый 31.05.2014, 17:53
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от kobezzza
Например на подходе "структуры", знакомые тем кто пишет на С/С++
Если ты о struct, то в С++ это тот же class, с минимальными отличиями

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

Намного же приятней и понятней писать uint вместо Uint8Array

Последний раз редактировалось monolithed, 31.05.2014 в 17:57.
Ответить с цитированием
  #14 (permalink)  
Старый 31.05.2014, 17:55
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

dmitry111, у веб сокетов, три вида отправляемых данных: string, blob, array buffer.

Т.е. ставишь binaryType = 'arraybuffer'; и работаешь

Цитата:
Разобраться можно, вот только вместо того того чтобы ввести полноценные типы, придумали Java-подобный костыль.

Намного же приятней и понятней писать
uint вместо Uint8Array
Это обсуждается, хотят дать для asm.js нормальный синтаксис, чтобы можно было на нём писать, а не только использовать для трансляции из LLVM.

Т.е. будет набор элементарных типов и можно будет создавать "свои" типы с помощью структур.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 31.05.2014 в 17:59.
Ответить с цитированием
  #15 (permalink)  
Старый 31.05.2014, 17:58
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от kobezzza
у веб сокетов, три вида отправляемых данных: string, blob, array buffer
Зоопарк
Ответить с цитированием
  #16 (permalink)  
Старый 31.05.2014, 18:02
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от kobezzza
Т.е. будет набор элементарных типов и можно будет создавать "свои" типы с помощью структур.
Хотят придумать TypeScript?
Что-то я не помню такого треда в рассылке
Ответить с цитированием
  #17 (permalink)  
Старый 31.05.2014, 18:04
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от monolithed Посмотреть сообщение
Хотят придумать TypeScript?
Что-то я не помню такого треда в рассылке
http://wiki.ecmascript.org/doku.php?...:typed_objects

const Point2D = new StructType({ x: uint32, y: uint32 });
const Color = new StructType({ r: uint8, g: uint8, b: uint8 });
const Pixel = new StructType({ point: Point2D, color: Color });
 
const Triangle = Pixel.Array(3);
 
let t = Triangle([{ point: { x:  0, y: 0 }, color: { r: 255, g: 255, b: 255 } },
                  { point: { x:  5, y: 5 }, color: { r: 128, g: 0,   b: 0   } },
                  { point: { x: 10, y: 0 }, color: { r: 0,   g: 0,   b: 128 } }]);


Built-in Value Types
uint8, uint8Clamped : 8-bit unsigned integers
uint16 : 16-bit unsigned integers
uint32 : 32-bit unsigned integers
int8 : 8-bit signed integers
int16 : 16-bit signed integers
int32 : 32-bit signed integers
float32 : 32-bit IEEE754 floating-point numbers
float64 : 64-bit IEEE754 floating-point numbers

Сообщение от monolithed Посмотреть сообщение
Хотят придумать TypeScript?
Я бы был рад, если бы добавили опциональную явную декларацию типа, для замены JSDoc.

Т.е.

http://wiki.ecmascript.org/doku.php?id=strawman:guards

let x :: Number = 37;
function f(p :: String, q :: MyType) :: Boolean { ... }
let o = {a :: Number : 42, b: "b"};


И было бы здорово иметь какой нить аналог указателей, чтобы можно было делать так:

function foo(*a) {
  &a = 2;
}

var a = 3;
foo(*a);

a // 2


А ещё реализацию легковесных потоков как в Rust ... эх
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 31.05.2014 в 18:23.
Ответить с цитированием
  #18 (permalink)  
Старый 31.05.2014, 19:39
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

я эпический нуб, запорол задание из за того что вместо того что бы изучить либу без док. я начал пилить велосепед. Как от учится от велосепедо стоения?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #19 (permalink)  
Старый 31.05.2014, 20:47
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

Цитата:
я эпический нуб, запорол задание из за того что вместо того что бы изучить либу без док. я начал пилить велосепед. Как от учится от велосепедо стоения?
Писать коммерческий продукт в команде
__________________
Научу себя плохому
Ответить с цитированием
  #20 (permalink)  
Старый 31.05.2014, 21:16
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от cyber
я эпический нуб, запорол задание из за того что вместо того что бы изучить либу без док. я начал пилить велосепед. Как от учится от велосепедо стоения?
поздравляю

я таким образом начал учить ангуляр тоже олимпиаду запорол
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь срочно с js Artyom91 jQuery 0 15.04.2013 09:41
Срочно нужна помощь kalko91 Общие вопросы Javascript 7 09.11.2011 23:23
Срочно нужна помощь yuri-it Общие вопросы Javascript 2 12.09.2011 16:49
Срочно нужна ПОМОЩЬ!!! pp-vp Events/DOM/Window 2 03.07.2010 18:50
Срочно нужна помощь Гость Общие вопросы Javascript 2 02.09.2008 14:13