Рубрика «javascript» - 574

Здравый смысл веборазработчика подсказывает, что во браузерном джаваскрипте глобальные переменные являются свойствами объекта window — так что window.чегоНибудь и просто чегоНибудь должны быть синонимами и вести себя одинаково (если, конечно, мы не находимся в какой-нибудь такой функции, где переменную чегоНибудь переопределили локально).

Здравый смысл веборазработчика также ещё подсказывает, что неопределённая переменная должна иметь значение undefined — так что чегоНибудь и undefined должны быть синонимами и вести себя одинаково, если переменную чегоНибудь не упоминали в джаваскрипте, и если какой-нибудь чудила не дерзнул переопределить undefined.

Но если вы собираетесь программировать для Opera 11 (будь то начальная версия Opera 11.01 или новёхонькая Opera 11.61), то будьте готовы отречься от здравого смысла в обоих сих случаях! (Да и не только в Opera, как я покажу чуть ниже.)

Чтобы нагляднейше убедиться в этом, воспользуемся библиотекою Underscore.js, в которой как раз имеется удобная функция тестирования неопределённых переменных — это функция _.isUndefined(), в исходном коде определённая самоочевидным способом:

// Is a given variable undefined?
_.isUndefined = function(obj) {
   return obj === void 0;
};

Читать полностью »

Хождение по мукам: верстка для Safari под iOS (ч.1)

Введение:

Доброго дня!

Работая в успешной веб-студии, ориентированной на западный рынок, практически не существует проекта, в ТЗ к которому нет строки «корректное отображение на мобильных устройствах». Под мобильными устройствами в данном случае подразумеваются смартфоны и планшеты под управлением Android и iOS. Таким образом, современному веб-разработчику (дизайнеру / программисту / верстальщику) никак нельзя не учитывать особенности отображения конечного продукта на вышеупомянутых девайсах.

Нельзя сказать, что валидный, кроссбраузерный код, который корректно отображается на старших настольных братьях даст совершенно иную картину при запуске на мобильной платформе — сейчас уже ситуация обстоит куда лучше, нежели раньше. Однако, как показывает практика, все еще остались некоторые нюансы, которые необходимо учитывать. О тех, с которыми мне пришлось столкнуться в процессе тестирования в Safari под iOS я хочу сегодня рассказать.

Читать полностью »

image

Вступление:

Я был вдохновлен 2мя статьями, этой и этой. Мне очень понравилась идея первой статьи, но я подумал, что покупать Arduino для этой затеи было бы слишком «жирно». Затем, когда я наткнулся на вторую статью, я понял, что Yoctopuce-demo -как раз то, что мне надо! И я решил заказать его.
Читать полностью »

Проблемы интеграции своих программ с чужими все более широко охватывают область разработки программного обеспечения. Многие программисты считают, что нужно писать свое, интегрироваться с чужими разработками это плохо, причем не учитывают размеры команд разработчиков, их опыт и целесообразность. Да и в течении года-два реализовать ту же самую систему расчета  методом конечных элементов хоть и можно, но высокого качества она не будет. Разве можно за пару лет повторить путь развития проекта, который развивался 10–20 лет? Естественно нельзя и часто нецелесообразно.      

    Никто ведь не спорит, что в России самыми популярными программными средствами являются ANSYS, ABAQUS, SCAD, LIRA, PLAXIS и т.д. И какова вероятность занять свою нишу в этом уже давно поделенном участке рынка? Да и мало кто захочет переучиваться под новую программу. А вот проблемы интеграции своих программ с мощными расчетными системами и перенос результатов из одной в другую задача намного более востребованная. Мы имеем мощные вычислительные пакеты, на разработку и отладку которых ушло много лет, имеем некую задачу, реализовать которую в одной вычислительной системе подчас весьма сложно, или отсутствуют необходимые нам возможности, которые мы можем сами реализовать.

    Этой задачей я занялся при необходимости выполнить параметрическую оптимизацию моделей материалов, для соответствия результатов моделирования группы реальных испытаний с их расчетными моделями. Это еще усугубляется тем, что каждый программный продукт считает по своему и результаты расчетов в ANSYS не будут идентичными расчету в ABAQUS при одинаковых параметрах модели. Это зависит от конкретной реализации расчетов, типов конечных элементов и даже расположения узлов сетки. В итоге инженер вводит параметры материалов, не зная, на сколько точно они соответствуют реальности. Причем вариативность оптимальных параметров может достигать 70% от результатов испытаний, тем более что обработка испытаний выполняется в рамках одной, максимум двух условий прочности, зачастую самых простых, а для сложных моделей не всегда даже известно как определить требуемые параметры, особенно когда их предлагают задать исходя из опыта в каком либо диапазоне.

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

Читать полностью »

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

Думаю, многие, кто сталкивался в своей работе с iframe, сталкивались и с задачей установки высоты этого самого айфрейма.

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

В яндексе можно найти множество решений этой проблемы, но большинство из них обладают одной проблемой: они не поддерживают возможность менять размеры окна когда содержимое iframe и родительский элемент находятся на разных доменах.

Есть одно неплохое кросс-доменное решение, но оно было написано в 2007 году, а с тех пор многое изменилось. Поэтому пришлось разрабатывать решение этой проблемы самостоятельно, основываясь на приведенном решении.

Читать полностью »

На Хабре уже упоминалась данная тулза, но как-то в контексте других тем.

What is Fiddler?
Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect traffic, set breakpoints, and «fiddle» with incoming or outgoing data. Fiddler includes a powerful event-based scripting subsystem, and can be extended using any .NET language.

Fiddler is freeware and can debug traffic from virtually any application that supports a proxy, including Internet Explorer, Google Chrome, Apple Safari, Mozilla Firefox, Opera, and thousands more. You can also debug traffic from popular devices like Windows Phone, iPod/iPad, and others.

To debug applications you've written in Java, .NET, or using WinHTTP, see this page.

Итак Fiddler — прокси, который работает с трафиком между вашим компьютером и удаленным сервером, и позволяет просматривать и менять его.

Читать полностью »

Я знаю про Backbone.js и про Knockout.js

Просто иногда хочется чего-то простого.

Читать полностью »

Индексация AJAX сайтов

Вместе с разработкой Joosy, AJAX внезапно – но ожидаемо, – заполонил все проекты, за которые мы беремся. Парадигма оказалась крайне удачной во всех аспектах, кроме одного. Того самого классического: «AJAX? Индексация? Пфф...». Пока мы делаем интернет-банки, это нас вполне устраивает. Но как не отказывать себе в этом изысканном удовольствии для открытых Web-ресурсов?

А вот как: Google AJAX Crawling – это стандарт Google, который позволяет при формировании AJAX-адресов специальным образом (#!) заставить Google магически запрашивать вместо него другой магический адрес. С которого Google будет ждать HTML-дамп этой страницы, который он весело прожует. Добрые люди уже написали статью про то как это работает. Ну а нам остается научиться эффективно этот дамп формировать. Да так, чтоб без вмешательства в код самого приложения.

Читать полностью »

image

Данная библиотека является доработкой tinyicon с использованием всех пожеланий пользователей. Давайте разрабатывать вместе ©

Представляю Вам новую библиотеку JFavicon. Сразу после подключения ее к сайту и инициализации Вы получаете удобный инструмент для динамического изменения favicon. В ее функционал входит:

  • Автоматическая установка favicon
  • Изменение favicon, в зависимости от каких-либо событий
  • Счетчик, с возможностью смены стиля, прямо в favicon
  • Динамическое изменение title страницы

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js