Как получить HWND окна при наведении на него курсора мыши С++ WinApi32 или Qt?
Ответ
Функция HWNDWindowFromPoint(POINT Point) поможет вам.
Как получить HWND окна при наведении на него курсора мыши С++ WinApi32 или Qt?
Функция HWNDWindowFromPoint(POINT Point) поможет вам.
Есть строка в php допустим $str = 'z1.z2.z3.z6' Как привести её к такому виду '[f1][f2][f3][f6]' через регулярку используя preg_replace ??? То есть везде заменить z на f, но соответствующие числа оставить и заключить выражение в квадратные скобки.
$str = 'z1.z2.z3.z6'; echo preg_replace('/z(\d+)(.|$)/i', '[f${1}]', $str);
Нужно сделать так, чтобы при клике по определённому блоку (100% на 100%, условно) на месте клика появлялась SVG точка.
Добавлять элементы на место клика можно так:
var block = document.getElementById('block');
block.onclick = function(e) {
var point = document.createElement('div');
point.className = 'point';
point.style.left = e.pageX + 'px';
point.style.top = e.pageY + 'px';
block.appendChild(point);
}
html,
body {
padding: 0px;
margin: 0px;
height: 100%;
position: relative;
}
.block {
width: 100%;
height: 100%;
position: absolute;
left: 0px;
top: 0px;
}
.block .point {
position: absolute;
width: 2px;
height: 2px;
background: #000;
}
На данный вопрос уже ответили:
Упорядочивание записей в таблице данных
1 ответ
К примеру есть таблица users с одним столбцом id
id |
----
1
2
3
4
Я делаю элементарный SELECT
SELECT id FROM users
и получаю данные 1, 2, 3, 4 в том порядке в котором они пронумерованы.
Собственно вопрос: всегда ли MySQL гарантирует что данные будут получены именно в том порядке в котором они пронумерованы? Т. е. возможен ли случай когда например результат будет такой: 1, 3, 2, 4?
Или все же лучше использовать явную сортировку?
SELECT id FROM users ORDER BY id
Если вам необходимо получить упорядоченный набор, всегда используйте сортировку.
Например, если вставлять строки не по порядку, например так:
id |
----
1
4
2
3
то без сортировки вы их в таком виде и получите.
Часто вы будите получать в результате запроса строки в порядке вставки, но даже этого СУБД вам не гарантирует.
По этому, всегда когда вам нужен упорядоченный набор данных, указывайте сортировку явно.
Есть SVG демка https://codepen.io/anon/pen/gxMJOJ
Все блоки, как положено разделены на группы
И ещё не нашёл информации как выравнивать текст внутри SVG-блока?
Теги
Не получается сделать связь один к одному, ошибка :
System.InvalidOperationException: 'Unable to determine the principal end of an association between the types 'DataBase.Entities.Branch' and 'DataBase.Entities.Address'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.'
public class Branch
{
public int Id { get; set; }
public string Metro { get; set; }
public string Name { get; set; }
public string CommentToAddress { get; set; }
public string Schedule { get; set; }
public string SchedulePrivatePerson { get; set; }
public string ScheduleGeneral { get; set; }
public string ScheduleEntities { get; set; }
public Bank Bank { get; set; }
public Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string CountryCity { get; set; } //город
public string StreetName { get; set; } // улица
public string StreetType { get; set; } // "тип" улицы(улица, проспект, проезд) - для оптимизации запроса к карте
public string ClarifyingAddress { get; set; } //адрес после улицы
public Branch Branch { get; set; }
}
public class Bank
{
public Bank()
{
Branches = new HashSet
public int Id { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public float DollarBuy { get; set; }
public float DollarSell { get; set; }
public float EuroBuy { get; set; }
public float EuroSell { get; set; }
public System.DateTime UpdateTime { get; set; }
public /*virtual*/ ICollection
public class City
{
public int Id { get; set; }
public string Value { get; set; }
public string Name { get; set; }
}
Configs
internal class AddressConfig : EntityTypeConfiguration
{
public AddressConfig(DbModelBuilder modelBuilder)
{
HasKey(p => p.Id);
Property(p => p.CountryCity).IsRequired();
Property(p => p.StreetName).IsRequired();
Property(p => p.StreetType).IsRequired();
Property(p => p.ClarifyingAddress).IsRequired();
}
}
internal class BankConfig : EntityTypeConfiguration
modelBuilder.Entity
internal class BranchConfig : EntityTypeConfiguration
modelBuilder.Entity
modelBuilder.Entity()
.HasRequired(p => p.Branch)
.WithRequiredPrincipal(p => p.Address);
}
}
class CityConfig: EntityTypeConfiguration
Context
public class Context : DbContext
{
public Context():base("DbMap")
{
}
static Context()
{
System.Data.Entity.Database.SetInitializer
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new BankConfig(modelBuilder));
modelBuilder.Configurations.Add(new BranchConfig(modelBuilder));
modelBuilder.Configurations.Add(new AddressConfig(modelBuilder));
modelBuilder.Configurations.Add(new CityConfig());
}
ConnectionString
Что-то вы перемудрили, для того что бы создать связь "один-к-одному" достаточно указать:
modelBuilder.Entity
Добрый день, использую tasm (Turbo assembler) и мне стало жутко интересно какая же конструкция работает быстрее :
jcxz метка
или
cmp cx, 0
je метка
причем Vim не подсвечивает вариант с jcxz
Вторая конструкция будет дольше выполняться по тактам, следовательно медленнее.
Не зря же команду придумали разработчики архитектуры x86...
Подробности тут:
Источник
Я хочу сделать фильтр на чёрно-белое изображение, это мне нужно для разных тем в приложении. Как я понимаю для этого надо использовать
ImageView header = (ImageView) findViewById(R.id.drawer_header);
header.setColorFilter(R.color.my_color);
Я создал отдельный проект для тестирования и вот что получилось:
Но если я нажимаю на любую кнопку, кроме "убрать фильтр" (он ставит цвет android.R.color.transparent), получается вот такая фигня:
Почему он делает всё фиолетовым? По логике всё должно работать. Приведу код применения цвета полностью:
...
// Покрасить в красный
public void setRedColor(View v) {
ImageView header = (ImageView) findViewById(R.id.header);
header.setColorFilter(R.color.red);
}
// Покрасить в синий
public void setBlueColor(View v) {
ImageView header = (ImageView) findViewById(R.id.header);
header.setColorFilter(R.color.blue);
}
// Покрасить в зелёный
public void setGreenColor(View v) {
ImageView header = (ImageView) findViewById(R.id.header);
header.setColorFilter(R.color.green);
}
// Убрать краску
public void setNullColor(View v) {
ImageView header = (ImageView) findViewById(R.id.header);
header.setColorFilter(android.R.color.transparent);
}
Разметка:
Разобрался с проблемой, надо было сделать так:
header.setColorFilter(this.getResources().getColor(R.color.red), PorterDuff.Mode.ADD);
Вывожу в компоненте
Браузер выдаёт ошибку:
В классе пишу:
selected: any = [
{viewValue: "Элемент 1", value: "0"},
{viewValue: "Элемент 2", value: "1"},
{viewValue: "Элемент 3", value: "2"},
{viewValue: "Элемент 4", value: "3"},
];
selectedOne: string = "0";
Делаю всё по доке Material Angular
Но всё равно не хочется ставить элемент по умолчанию. Кто знает в чём может быть причина?
Angular cli 4.3; material 2.0
Директива ngModel расположена в модуле FormsModule из @angular/forms
Поэтому для ее использования нужно импортировать этот модуль в модуль где находит указанный компонент.
Есть древний как помёт мамонта софт, писаный на С с использованием curses под SCO-Unix и кодировку cp866. Я пытаюсь перенести его на linux (SLES 12) в связи понятно с чем. Вместо curses(которую тупо не нашел) при компиляции использую ncurses. И вроде все работает, но вот есть один косяк конкретно с заглавными русскими буквами - он их отображает вот так:
~Qтолбец:1
вместо
Столбец:1
Код:
#include
int main(int argc, char *argv[]) {
initscr();
mvaddstr(1, 0,
"Тут текст в кодировке cp866.");
getch();
}
Выводит:
~Rут текст в кодировке cp866.
Если весь тот-же текст параллельно выводить printf'ом, то выводится корректная строка.
Для исправления данной ситуации надо добавить вызов функции use_legacy_coding(2); после initscr();
the parameter is in the range 128-159, i.e., a C1 control code. If
use_legacy_coding has been called with a 2 parameter, unctrl returns
the parameter, i.e., a one-character string with the parameter as the
first character. Otherwise, it returns ''~@'', ''~A'', etc., analogous
to ''^@'', ''^A'', C0 controls.
Такой код корректно отображает текст в однобайтовой восьмибитной кодировке CP866:
#include
int main(int argc, char *argv[]) {
initscr();
use_legacy_coding(2);
mvaddstr(1, 0,
"Тут текст в кодировке cp866.");
getch();
}
Возможно ли в JavaScript проверить, поддерживает ли браузер spread operator? Будет ли в этом браузере работать следующая конструкция?
var array = [...arg];
в данном случае поможет eval и try..catch
при попытке выполнить код с использованием spread оператора в браузере, который его не поддерживает будет кинуто исключение об ошибке синтаксиса, поэтому проверяющая функция может выглядеть так:
function checkSpread() {
try {
return eval('[...[]]==""');
} catch (e) {
return false;
}
}
console.log(checkSpread());
Текущий сниппет, например в IE11 вернет false, а в Chrome - true
Вместо eval так же можно использовать конструктор Function
function checkSpread() {
try {
var func = new Function('return [...[]]');
return func() == '';
} catch (e) {
return false;
}
}
console.log(checkSpread());
Есть окно на PyQt5
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QWidget
class Window(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setFixedSize(200, 350)
self.setWindowTitle('Test')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Window()
sys.exit(app.exec_())
Как убрать ненужный пункт меню Развернуть/Свернуть?
В Qt для различных виджетов и диалоговых окон можно задавать WindowsFlags, меняющие их отображение. Чтобы сделать что-то нестандартное, нужно объявить наш виджет custom'ным, для этого используется флаг Qt::CustomizeWindowHint, Например, следующий код показывает только кнопку закрытия у диалогового окна в Qt (C++):
QDialog d;
d.setWindowFlags( Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint );
d.setWindowTitle("abcd");
d.show();
Подробнее:
официальный пример работы с флагами Qt
перечень Qt::WindowsFlags
Имеется коллекция объектов:
public class Param
{
public string Name { get; set; }
public string Description { get; set; }
}
Эту коллекцию необходимо привязать к ComboBox так, чтобы в качестве элемента списка был Name, а в качестве всплываемой подсказки при наведении на каждый элемент был Description. Это легко делается:
Все бы ничего, но как сделать так, чтобы когда Description null или пустой, ToolTip вообще не отображался. Сейчас отображается пустой квадратик. Вариант ниже не помог. Заранее спасибо.
У вас как-то сложно. Значение null должно убирать ToolTip и так, так что проблема только с пустой строкой. Проще всего просто отловить это через конвертер.
class NullIfEmptyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object p, CultureInfo ci) =>
(string)value == string.Empty ? null : value;
public object ConvertBack(object value, Type targetType, object p, CultureInfo ci) =>
throw new NotSupportedException();
}
(или, как подсказывает @Андрей в комментариях, string.IsNullOrWhiteSpace((string)value) ? null : value).
Ваш код получается таким:
Не забудьте положить в ресурсы окна
К примеру, есть класс User. Есть ViewModel, в которой есть свойство LastUser. Свойство периодически обновляется, генерируя NotifyPropertyChanged. На форме, поверх остальных элементов, лежит невидимая панель. При обновлении свойства, необходимо показать панель на несколько секунд, а затем спрятать. Как можно реализовать такое поведение? Есть ли какой-нибудь EventTriger или DataTrigger?
Наиболее простым видится вынести в VM отдельное свойство для видимости панели
и сделать метод, который запускать в сеттере LastUser
private async void ShowDetails()
{
IsVisiblePanel = true;
await Task.Delay(TimeSpan.FromSeconds(1));
IsVisiblePanel = false;
}
Если не хотите делать это в VM - можно сделать во View, подписавшись вручную на PropertyChanged и делая тоже самое.
Другой вариант, немного более замороченый - задействовать анимацию.
Давайте будем действовать через прозрачность, у меня вот такая панель:
Обратите внимание, у панели установлен DataContext, это важно, мы этим воспользуемся в дальнейшем.
Давайте добавим в панель стиль и определим триггер, который будет скрывать панель когда она полностью прозрачна:
Хорошо, а теперь управлять прозрачностью будет анимация, для этого запустим ее в EventTrigger
Чтобы событие Binding.TargetUpdated возникало нужно его включить:
DataContext="{Binding SelectedUser, NotifyOnTargetUpdated=True}"
Теперь надо отключить панель в обычном режиме: Opacity="0"
Ну и можно сделать анимацию посимпатичнее:
Полный код панели, на всякий случай:
PS: как раз вчера появилась статья на Хабре, в которой описаны возможные замены подписке на Binding.TargetUpdated
Получается всё можно сделать гораздо проще используя PropertyChangedTrigger из пакета Microsoft.Expression.Interactions
Мне нужно, чтобы иконка расширения при определенных условиях становилась "серой". Ни как не могу найти способ заставить хром рисовать такую иконку.
Важный момент - "серые" иконки - это именно фича хрома. Т.е. вариант с заготоволенными иконками с нормальными и серыми цветами меня не интересует.
Стоит пойти от обратного: почему иконка у вас "цветная"? Полагаю вы используете page_action, иконка которого всегда цветная/оригинальная.
То, что вас интересует - это browser_action. Данное API позволяет поместить иконку приложения, которая по-умолчанию не активирована для каждого таба (и имеет серый цвет).
Задача заключается в следующем.
Нужно сделать кнопку, которая переключает вид товаров на сайте(кубиками или списком).
Из моих идей:
Через ajax посылать запрос, а в ответ получать страницу с товарами в требуемом стиле
Через js редактировать html код товаров(какой-то костыль, кажется)
Другая страница в требуемом формате(самый худший вариант, как понимаете)
Прошу помочь с этой задачей. Как ее лучше решить? Может есть более простой способ?
В данном случае стоит просто манипулировать стилями:
var products = document.getElementById('products');
document.getElementById('grid').addEventListener('click', function(){
products.classList.add('grid');
});
document.getElementById('list').addEventListener('click', function(){
products.classList.remove('grid');
});
.product {
background: #CCC;
width: 100%;
height: 50px;
border: 1px solid #FFF;
box-sizing: border-box;
float: left;
}
.grid .product {
width: 50%;
}
Интересует насколько это влияет на производительность запроса в PHP
все запросы я делаю просто SELECT * ... LIMIT 0,20 и он постоянно подтягивает значения всех столбцов (их примерно до 15), но использую из них я максимум 6-7.
У меня все время стоит лимит, а в базе строк больше > 10000 вот интересно это сильно влияет на скорость? а что если дальше продолжать еще делать JOIN'ы ?
В большинстве случаев морочиться на эту тему не нужно. Вопрос про * в запросах - это такая trivia, которую нубы с придыханием рассказывают друг другу и которую можно прочитать в идиотских списках "25 способов ускорить свой скрипт в 100500 раз".
Если удобно писать * и в базе нет блобов с гигазами варезов, а есть 15 несчастных варчаров, то никто не умрет от звездочки.
Плюсы использования звездочки:
при добавлении полей в таблицу не надо менять код запроса
запрос становится читабельнее и короче
Минусы использования звездочки:
большой потенциальный объем данных, передаваемых в пхп, может сказаться на производительности
если в запросе используется временная таблица, то наличие ненужных полей может катастрофически отразиться на времени запроса, поскольку во временную таблицу будут записываться все поля таблицы. Разумеется, лучше избегать запросов, которым требуется создание временной таблицы.
Допустим, у меня есть строка:
stroka = input()
Вводные данные:
qwertyu iopasd fghjklz xcvbnm
Как сделать так, чтобы на выходе все слова были с заглавной буквы?
Qwertyu Iopasd Fghjklz Xcvbnm
Не какое-то одно слово после какой-нибудь точки, а все слова в строке.
Используйте метод title
s = 'qwertyu iopasd fghjklz xcvbnm'
print(s.title())
Результат:
Qwertyu Iopasd Fghjklz Xcvbnm
Есть строка, например, "установить ВКЛ/ВЫКЛ".
массив_строки = строка.split('/(?=\/)|\s/')
в данном случае '/' оказывается в начале следующего элемента - '/ВЫКЛ'
Какой нужен regex для того, что бы появился следующий массив: ['установить', 'ВКЛ/', 'ВЫКЛ'] ?
(?=\/) - положительный блок просмотра вперёд, тогда как тут пригодился бы блок предварительного просмотра назад, но регулярные выражения JavaScript не поддерживают его. (?<=\/)|\s+ - так бы оно выглядело в s.split()
Можно найти все совпадения символов, отличных от пробельных и символа косой черты, за которыми может находится 1 необязательный знак косой черты:
/[^\s\/]+\/?/g
Демо регулярного выражения. Перед / обязательно наличие непробельного символа, отличного от /
console.log(
"установить ВКЛ/ВЫКЛ".match(/[^\s\/]+\/?/g)
);
Есть следующая система.
Существует сервер обработки фото на одном сервере и есть основной сервер.
Пользователь отправляет форму, в которой есть фото, на сервер обработки фото, сервер фото обрабатывает его и отправляет на основной сервер через requests.post. На данный момент работает, только если сначала сохранить файл на физический диск, а потом уже отправить его с (указанием пути) на основной сервер.
Как можно отправить файл через requests.post, не сохраняя его на диск?
Пробовал конвертировать с помощью StringIO, BytesIO, но так ничего и не вышло.
сохраняю на данный момент так:
# Получаю и сохраняю фото
f = request.FILES['photo']
f.save(file_path)
# Меняю размер фото
image = Image.open(file_path)
image.thumbnail([150, 150], Image.ANTIALIAS)
image.save(file_path, image.format, quality=100, optimize=1)
# Отправляю так
fil = open(file_path, 'rb')
filess = {'photo': ('photo.jpg', fil, 'image/jpeg')}
request = requests.post("%s%s" % (domen, url), data=post, files=filess)
Собственно нужно отправить уже измененный файл image
На счет вывода тут ошибок не уверен что получится, пробовал разные варианты и много и ошибки в некоторых случаях не выходили, но на основном сервере файл не сохранялся, значит что то не то отправлял, на основном сервере нет возможности посмотреть логи ошибок.
То что я находил по отправке файла через StringIO ничего не работало, то сам модуль ругался что данные не те, то модель по отправке ругался что данные не те, поэтому причина видимо в том что я файл не правильно преобразовывал в StringIO. Видимо мой вопрос сводится к тому как правильно преобразовать этот файл к такому формату и потом как эти данные отправить через requests.post
Основной сервер-то как принимает картинку? Тоже как загружаемый файл? Тогда предельно просто:
def upload_view(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
f = request.FILES['photo']
requests.post('http://example.com', files={f.name: f})
return redirect('upload:success')
else:
form = UploadFileForm()
return render(request, 'upload.html', {'form': form})
Если он ожидает поток байт в теле запроса, то чуть сложнее:
def upload_bridge(f):
for chunk in f.chunks():
yield chunk
def upload_view(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
requests.post('http://example.com',
data=upload_bridge(request.FILES['photo']))
return redirect('upload:success')
else:
form = UploadFileForm()
return render(request, 'upload.html', {'form': form})
Только учтите, что большой файл может надолго поставить обработчик колом. Это может привести либо к обрыву соединения по таймауту, либо исчерпанию обработчиков и последующей недоступности сайта.
UPDATE:
from StringIO import StringIO
f = request.FILES['photo']
input = StringIO(f.read())
output = StringIO()
image = Image.open(input)
image.thumbnail([150, 150], Image.ANTIALIAS)
image.save(output, 'PNG')
requests.post('http://example.com', files={f.name: output})
output.close()
input.close()
Этот вариант не только будет обработчик ставить колом, но ещё и память жрать будет.
Изначально у меня метод выглядит следующим образом:
override fun onListItemClick(itemIndex: Int, itemCode: String) {
val data = adapter.getItem(itemIndex)
if (data is TitleValueItem) {
when (data.titleId) {
R.string.v2_mobile_settings_language -> onLanguageClick()
}
}
}
теперь я его решил преобразовать таким образом:
override fun onListItemClick(itemIndex: Int, itemCode: String) {
when(adapter.getItem(itemIndex) as? TitleValueItem? ?: return) {
R.string.some -> onLanguageClick()
}
}
И он мне ругается на строковый ресурс, что мол Int вместо TitleValueItem, не могу понять, что я забыл дописать то .
Попробуйте следующим образом:
override fun onListItemClick(itemIndex: Int, itemCode: String) {
when ((adapter.getItem(itemIndex) as? TitleValueItem)?.titleId ?: return) {
R.string.v2_mobile_settings_language -> onLanguageClick()
}
}
Есть коллекция из элементов с переменной
A=4
B=1
C=65
D=6
E=414
Надо их расположить в порядке возрастания. 1 4 6 65 414. Есть можно то покажите как использовать в коллекции без самодельных циклов.
Когда у вас будет массив используйте функцию
//заполняем массив...
Arrays.sort(array);
Примите к сведению что массивы и коллекции эти разные вещи. Не забудьте заимпоритировать пакет Arrays
Если вопрос касается коллекций, то следующий подход, например для ArrayList:
List list = new ArrayList();
//заполняем лист...
Collections.sort(list);
строка: abcd, вывести ab bc cd. можно ли это сделать в одной регулярке, без replace?
p.s условие будет куда сложнее, чем вывести последний символ предыдущего результата
Сам по себе движок регексов в C# выдает непересекающиеся совпадения, но можно использовать positive lookahead:
var matches = Regex.Matches("abcd", "(.)(?=(.))")
.Cast
Точки заменить на соответствующие regex-ы для перекрываемых / неперекрываемых частей.
Стоит заметить, что простое решение с циклом и вызвов перегрузки Match с указанием начального индекса будет проще, читабельнее и эффективнее на длинных строчках.
Есть кучка чекбоксов, у каждого есть свой id. Хочу чтобы при загрузке документа загорелись те, которые я хочу. Но что бы не одновременно загорелись, а через допустим 200 миллисекунд, и в рандомном порядке.
Не могу додуматься как это сделать. Сколько не пробовал, либо загораются все сразу, либо вообще не загораются.
$('#sass').prop('checked',true);
Вот так писал. Как задать им очередь не знаю
Выбираем все желаемые элементы.
Превращаем набор в массив.
Перемешиваем используя алгоритм Фишера-Йетса
Для каждого элемента массива создаём задержку для изменения чекбокса.
function shuffle(a) {
for (var m=a.length; m; ) {
var i = Math.random() * m-- | 0;
var t = a[i];
a[i] = a[m];
a[m] = t;
}
return a;
}
$(function () {
var DELAY = 500;
var els = shuffle($("#a,#c,#g,#i,#j,#k,#l,#o,#p,#s,#u,#v,#x").toArray());
for (var q=0; q
Как выполнить какое-то действие, если в коллекции найдется элемент с соответствующим полем?
List
for (item:items){
if (Objects.equals(item.getId(), "123123123")){
customer="admin";
break;
}
}
Как это будет выглядеть с использование java 8, stream api?
Воспользуйтесь методом Stream::anyMatch
boolean contains = items
.stream()
.anyMatch(item -> Objects.equals(item.getId(), "123123123"));
String customer = contains ? "admin" : null;
Ideone
Веб дизайн только познаю, хотя занимаюсь им давненько, но понимаю что это бездна знаний и вот по сути вопрос в чем. Как сделать разный CSS при перезагрузке страницы? Разные иконки например, что бы разным посетителям сайта показывались разные иконки. И при обновлении нажимая на F5 менялись стили иконок. ???
На чистом JavaScript
var styles = ['blue', 'red', 'green']; // диапазон значений
randomStyles('class', styles); // вызываем функцию "рандомных стилей"
function randomStyles(sel, arr) { // sel - селектор, arr - диапазон значений
var els = document.getElementsByClassName(sel), // получаем элементы с необходимым классом
newArr = arr; // объявляем новый массив
for (let i = 0; i < els.length; i++) { // перебираем все элементы с классом
var randClass = newArr[Math.floor(Math.random() * newArr.length)]; // рандомное значение из массива
els[i].classList.add('class-' + randClass); // добавляем элементу класс с полученным значением
newArr.splice(newArr.indexOf(randClass), 1); // удаляем из массива подставленный класс, чтобы избежать повтора
}
}
.class {
width: 200px;
height: 50px;
margin-bottom: 10px;
}
.class-blue {
background: blue;
}
.class-red {
background: red;
}
.class-green {
background: green;
}
Есть проблема, не могу найти решения.
Есть блок, у него внутренняя тень. Что бы тень накладывалась на элементы приходиться ставить отрицательный z-index.
.content {
height: 140px;
overflow-x: auto;
white-space: nowrap;
overflow-y: hidden;
padding: 20px 10px 10px 10px;
box-shadow: inset 0px 0px 15px 10px rgba(0, 0, 0, 1);
backgound-color: yellow;
border: 1px solid black;
width: 300px;
}
.item {
height: 100px;
width: 100px;
background-color: yellow;
display: inline-block;
cursor: pointer;
z-index: -1;
position: relative;
}
.item:hover {
background-color: red;
}
Быть может такой вариант подойдет. Правда скролл получается внутри.
.content {
padding: 20px 10px 0 10px;
width: 300px;
height: auto;
box-sizing: border-box;
white-space: nowrap;
overflow-x: auto;
overflow-y: hidden;
}
.item{
height: 100px;
width: 100px;
background-color: yellow;
display: inline-block;
cursor: pointer;
position: relative;
}
.item:hover{
background-color: red;
}
.wrapper {
border: 1px solid black;
box-sizing: border-box;
width: 300px;
overflow: hidden;
position: relative;
padding-bottom: 20px;
}
.shadow-top, .shadow-right, .shadow-bottom, .shadow-left {
box-shadow: 0 0 15px 10px rgba(0,0,0,1);
position: absolute;
}
.shadow-right, .shadow-left {
height: 100%;
width: 0;
top: 0;
}
.shadow-top, .shadow-bottom {
width: 300px;
height: 0;
left: 0;
}
.shadow-top {
top: 0;
}
.shadow-right {
right: 0;
}
.shadow-bottom {
bottom: 0;
}
.shadow-left {
left: 0;
}
Создал свою секцию в файле конфигов, могу править значения в существующих строках, но не получается удалять и добавлять строки. Мой код:
Сам конфиг:
Файл с классом моей секции:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
namespace project
{
class CircuitsConfigSection : ConfigurationSection
{
[ConfigurationProperty( "Circuits" )]
public CircuitsCollection CircuitItems
{
get { return ((CircuitsCollection)(base["Circuits"])); }
set { base["Circuits"] = value; }
}
}
[ConfigurationCollection(typeof(CircuitElement))]
public class CircuitsCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new CircuitElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((CircuitElement)(element)).CircuitName;
}
public CircuitElement this[int idx]
{
get { return (CircuitElement)BaseGet(idx); }
}
}
public class CircuitElement : ConfigurationElement
{
[ConfigurationProperty("circuitName", DefaultValue = "", IsKey = true, IsRequired = true)]
public string CircuitName
{
get { return ((string)(base["circuitName"])); }
set { base["circuitName"] = value; }
}
[ConfigurationProperty("connectionStringOut", DefaultValue = "", IsKey = false, IsRequired = false)]
public string ConnectionStringOut
{
get { return ((string)(base["connectionStringOut"])); }
set { base["connectionStringOut"] = value; }
}
[ConfigurationProperty("connectionStringIn", DefaultValue = "", IsKey = false, IsRequired = false)]
public string ConnectionStringIn
{
get { return ((string)(base["connectionStringIn"])); }
set { base["connectionStringIn"] = value; }
}
}
}
Обработчик клика, где я обращаюсь к конфигу, пытаясь его изменить:
private void saveBtn_Click(object sender, EventArgs e)
{
Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
CircuitsConfigSection section = (CircuitsConfigSection)cfg.Sections["CircuitsSection"];
if (section != null)
{
for (int i = 0; i < circuitSettings.Count; i++)
{
section.CircuitItems[i].CircuitName = circuitSettings[i].Name;
section.CircuitItems[i].ConnectionStringOut = circuitSettings[i].GetConnString(true);
section.CircuitItems[i].ConnectionStringIn = circuitSettings[i].GetConnString(false);
}
cfg.Save();
ConfigurationManager.RefreshSection("CircuitsSection");
}
else System.Diagnostics.Debug.WriteLine("Секция не найдена");
this.Close();
}
Понятное дело, что если в circuitSettings хранится больше объектов, чем уже есть в конфиге (section.CircuitItems), то будет вылет за пределы диапазона в счетчике. Но беда в том, что нельзя задать что-то вроде
section.CircuitItems.add(new Item())
Как быть? Как задать больше или меньше существующих элементов? Или вообще отдельно сформированный список присвоить? Сейчас я не вижу доступных команд на изменение длинны списка ключей.
Так добавьте нужный метод в CircuitsCollection
public void Add(CircuitElement element)
{
BaseAdd(element);
}
доброго времени суток. объясните, пожалуйста, почему
var_dump("любая строка" == 0);
возвращает
bool(true)
при этом если 0 привести к строковому или булеву типу, либо использовать жёсткое сравнение, то условие отрабатывает нормально(false). как так получается что 0 равен любой строке? php 5.6.30
Документация
В случае, если вы сравниваете число со строкой или две строки,
содержащие числа, каждая строка будет преобразована в число, и
сравниваться они будут как числа.
Преобразование в число
Значение определяется по начальной части строки. Если строка
начинается с верного числового значения, будет использовано это
значение. Иначе значением будет 0 (ноль).
Соответственно при сравнении "строка" == 0, строка преобразуется в число 0
Ребята как сделать на скриншоте переключалку видео, то есть с права видим миниатюры, клацаем на нее и в левой стороне подгружается само видео, есть у кого то такой скрипт.
Вот так у меня выводятся сам блок с видео и миниатюр!
$('.video').on('click', function(e) { e.preventDefault(); // предотвращаем стандартное поведение ссылки var vid = $(this).attr('data-video'); // получаем id видео из атрибута $('.bigvideo iframe').attr('src', 'https://www.youtube.com/embed/' + vid); // и подставляем его в iframe }); a { display: block; cursor: pointer; } .bigvideo { max-width: 200px; margin: 0 auto; } Видео 1 Видео 2 Видео 3 Видео 4
Постоянно напрягает что при переключении в xml-файлы, по умолчанию, сначала открывается вкладка Design а не Text. И постоянно приходится переключаться. Можно ли это изменить в настройках?
Настройка "предпочитать XML редактор":
Settings.. -> Editor -> Layout Editor -> Prefer XML editor - отметить галочкой.
Скажите пожалуйста, чем отличаются два случая:
public class Main {
public static void main(String[] args) {
Class c1 = String.class; // Строка 3
Class c2 = String.class; // Строка 4
System.out.println(c1 +", " + c2);
}
}
В 3-ей и 4-ой строках мы делаем что-то похожее, но компилятор предупреждает, что c1 будет ссылкой на объект сырого типа, а c2 для компилятора -- прекрасная ссылка на прекрасный объект Class
Не понимаю разницы. И сырой тип и параметризованный знаком вопроса одинаково заполнены классом Object во время выполнения. Да и во время компиляции тот и другой обрабатываются по равному...
Возможно это просто философское предупреждение от Java, что сырой тип он сбивает с пути истины, а Class сразу показывает, что программист нацелен пихать в c2 всевозможные классы?
Брюс Эккель в "Философия Java" пишет, что использование Class вместо Class предпочтительнее, хотя оба варианта эквивалентны за тем лишь исключением, что при компиляции кода, где используется Class, будет выдаваться предупреждение. Кроме этого Эккель отмечает, что использование Class указывает, что разработчик более осмысленно подошёл к выбору типа, а не используете просто Class по незнанию.
Здравствуйте, есть простая функция скролла вниз:
$('body').animate({ scrollTop: $('.addanswer').offset().top - 70 }, 500);
Но дело в том что вчера она внезапно перестала работать на хроме, хоть я и не вводил правки в код, причем в Яндекс браузере все корректно работает, не подскажите, это обновления такие?
Вот простой пример, и оно работает, дело не в скрипте а в самой странице, что то там не дает работать вашему коду. посмотрите ошибки в кансоле.
$(document).ready(function(){
$('.scroll').bind('click',function(){
$('html,body').animate({ scrollTop: $('div').offset().top - 70 }, 500);
});
});
div{
height: 500px;
}
Как узнать какая версия nuget установлена?
Если просто ввести:
PM> Get-Package -ListAvailable
то это может быть версией?
NuGet.Core {2.14.0} NuGet.Core is the core framework assembly for NuGet that the rest of NuGet builds upon.
То, что у вас в вопросе, это версия библиотеки, которая используется Nuget менеджером.
Версия же самого менеджера отображается в консоли:
Package Manager Console Host Version 3.4.4.1321
А также в Tools -> Extensions and Updates:
Добрый вечер! Имеется скрипт из книги
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE',
'tango_with_django_project.settings')
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE',
'tango_with_django_project.settings')
import django
django.setup()
from rango.models import Category, Page
def populate():
python_pages = [
{'title': 'Official Python Tutorial',
'url':'http://docs.python.org/2/tutorial'},
{'title':"How to Think like a Computer Scientist",
'url':"http://www.greenteapress.com/thinkpython/"},
{"title":"Learn Python in 10 Minutes",
"url":"http://www.korokithakis.net/tutorials/python/"}
]
django_pages = [
{"title":"Official Django Tutorial",
"url":"https://docs.djangoproject.com/en/1.9/intro/tutorial01/"},
{"title":"Django Rocks",
"url":"http://www.djangorocks.com/"},
{"title":"How to Tango with Django",
"url":"http://www.tangowithdjango.com/"}
]
other_pages = [
{"title":"Bottle",
"url":"http://bottlepy.org/docs/dev/"},
{"title":"Flask",
"url":"http://flask.pocoo.org"} ]
cats = {"Python": {"pages": python_pages},
"Django": {"pages": django_pages},
"Other Frameworks": {"pages": other_pages} }
for cat, cat_data in cats.items():
c = add_cat(cat)
for p in cat_data['pages']:
add_page(c, p['title'], p['url'])
for c in Category.objects.all():
for p in Page.objects.filter(category=c):
print('- {0} - {1}'.format(str(c), str(p)))
def add_page(cat, title, url, views=0):
p = Page.objects.get_or_create(category=cat, title=title) [0]
p.url=url
p.views=views
p.save()
return p
def add_cat(name):
c = Category.objects.get_or_create(name=name)[0]
c.save()
return c
if __name__ == '__main__':
print('Starting Rango population script...')
populate()
При запуске он должен выдавать примерно такой результат:
$ python populate_rango.py
Starting Rango population script...
- Python - Official Python Tutorial
- Python - How to Think like a Computer Scientist
- Python - Learn Python in 10 Minutes
- Django - Official Django Tutorial
- Django - Django Rocks
- Django - How to Tango with Django
- Other Frameworks - Bottle
- Other Frameworks - Flask
Но, увы, ничего не происходит. Уже час ломаю голову над этим. Просто при запуске пустая строчка без каких-либо ошибок
Весь последний блок начиная со строки if __name__ == '__main__': нужно сместить на один отступ влево. Иначе в скрипте просто нечему будет начать выполняться.
Я использую WMI запросы для получения данных об удаленных компьютерах, но передача данных должна быть защищена. На вики и msdn'е я ничего подходящего не нашёл, но должна же винда как - то шифровать эти данные. Где можно узнать как она это делает, ну или не делает? Никогда не думал о таких вещах, поэтому прощу прощения, если вопрос глупый.
Вот здесь задавали подробный вопрос. Если верить ответу, то шифруется только аутентификация посредством Kerberos. Сами запросы не шифруются
Нашел такой плагин залипания при прокрутке, проблема в том что залипания не работает под мобильные устройства вот demo как сделать так что бы при прокрутке залипания заработало, position: sticky; тоже не работает
Помогло вот этот плагин: http://bureau.ru/bb/soviet/20130620/stickyeah.js
Добавим в нужный блок stickyeah например:
Что угодно.
В рамках урока по паттерну MVVM для приложений WPF мне нужно было добавить библиотеку System.Windows.Interactivity.dll через Reference Manager. Я её там не обнаружил (версия Visual Studio - 2017). На скриншоте ниже - всё, что есть в результатах поиска, начинающееся с System.Windows
Я подумал, что возможно данная библиотека уже встроена в новую версию проекта WPF (хотя в списке уже подключённых ссылок её тоже нет), и когда добавил нижеследующий код в ApplicationViewModel.cs, никаких ошибок пока что не было отображено средой разработки:
private RelayCommand doubleCommand;
public RelayCommand DoubleCommand {
get {
return doubleCommand ??
(doubleCommand = new RelayCommand(obj => {
Phone phone = obj as Phone;
if (phone != null) {
Phone phoneCopy = new Phone {
Company = phone.Company,
Price = phone.Price,
Title = phone.Title
};
Phones.Insert(0, phoneCopy);
}
}));
}
}
Однако, когда я добавил код XAML, то среда выдала сообщение о том, что в пространстве имён clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity не существует Interaction, EventTrigger и InvokeCommandAction
Не знаю, каким образом это связано с библиотекой System.Windows.Interactivity, но как следует решить данную проблему?
Требуемая библиотека является частью Microsoft Expression Blend 4 SDK и не включена в стандартную поставку, но вы всегда можете подключить ее из NuGet Gallery: System.Windows.Interactivity.WPF by Microsoft
Пользователи Visual Studio 2017 могут установить Microsoft Blend SDK в систему с помощью Visual Studio Installer, для этого на вкладке "Отдельные компоненты" ("Individual components") в разделе "Пакеты SDK, библиотеки и платформы" ("SDKs, libraries, and frameworks") необходимо установить галочку напротив пункта "Пакет SDK для Microsoft Blend для Visual Studio для платформы .NET" ("Blend for Visual Studio SDK for .NET") и нажать кнопку "Изменить".
После этого, библиотека System.Windows.Interactivity станет доступна из Reference Manager в разделе Assemblies/Extensions
Также, Blend SDK можно загрузить и установить в систему из центра загрузок Microsoft: 3.5, 4.0
Как с помощью python 3.6.1 сделать модуль для c++ Тоесть написать на python какой-то модуль чет с ним сделать и запускать через c++ допустим print("Hello, world") и когда мы импортируем эту библиотеку в c++ то будет выводить Hello, world
Вы можете Питон-код как внешнюю команду вызвать. К примеру:
#include
int main() {
return system("python -mwebbrowser http://example.com");
}
Чтобы выполнить Питон-код в С++, можно встроить (embed) Python-интерпретатор
#include
int main()
{
Py_Initialize();
PyRun_SimpleString("print('hello world')");
return Py_FinalizeEx() < 0;
}
Чтобы собрать программу, можно Makefile использовать:
NAME := embed-python-interpreter
PYTHON_VERSION := python-3.6
$(NAME): $(NAME).cc
$(CXX) `pkg-config --cflags ${PYTHON_VERSION}` $< -o $@ `pkg-config --libs ${PYTHON_VERSION}`
Также можно встраивать Питон, используя cffi, cython
Можно скомпилировать подмножество кода на Питоне в Си. К примеру, используя Pypy translate.py программу, которая умеет RPython в Си транслировать.
Обычно, наоборот C/C++ код используется, чтобы расширение для Питона создать или напрямую с помощью ctypes, cffi Си код вызывается из Питона:
>>> import ctypes
>>> libc = ctypes.CDLL(None)
>>> libc.printf(b"abc
")
abc
4
Здесь вызывается printf() Си функция из libc, включённой в CPython интерпретатор. abc это вывод в C stdout. 4 это Python REPL печатает возвращаемое значение из printf() (4 байта напечатано). Вот более сложные примеры:
вызов clock_gettime() Си функции из
Вот пример использования OpenSSL API, чтобы из x509 сертификата серийный номер достать который показывает, что при вызове многих функций, удобней более высокоуровневыми библиотеками пользоваться нежели напрямую ctypes
Cython удобен, чтобы интегрировать С/C++ код с Питоном или заметно ускорить Питон код. clipped_cumsum(), реализованная в Cython, в 100 раз быстрее аналога на чистом Питоне и иногда даже на порядок быстрее реализаций с помощью numpy, pandas, примеры: rotT(), max_rolling_sum(). Cython позволяет отпускать GIL, поэтому возможно ускорить чистые вычисления с помощью нескольких потоков, пример: b2a_bin(). Cython можно встретить в исходниках популярных библиотек таких как lxml, numpy, scipy, pandas, scikit-learn.
Исправил все баги и недочеты что написали в прошлый раз, добавил нормальное отображение текста и фотографии, теперь ссылка будет ссылкой, фотка фоткой и тд...
Добавил проект этот в github
И переписал его, чтобы он удовлетворял принципам MVP (Хотя не уверен т.к. model имеет ссылку на Presenter)
Прошу подсказать с ревью кода
По одному классу CommentAnswerObject. Думаю в остальных так же.
Зачем тут два огромных конструктора, фактически дублирующих друг друга?
public CommentAnswerObject(String urlImage, String name, String dogName, String text, String date, int numberUserComments, int numberLikeComents, boolean like, List
public CommentAnswerObject(String urlImage, String name, String dogName, String text, String date, int numberUserComments, int numberLikeComents, boolean like) {
this.urlImage = urlImage;
this.name = name;
this.dogName = dogName;
this.text = text;
this.date = date;
this.numberUserComments = numberUserComments;
this.numberLikeComents = numberLikeComents;
this.like = like;
}
Второй легко заменяется на
public CommentAnswerObject(String urlImage, String name, String dogName, String text, String date, int numberUserComments, int numberLikeComents, boolean like){
this(urlImage, name, dogName, text, date, numberUserComments, numberLikeComments, like, new ArrayList<>());
}
Такое огромное количество аргументов конструктора в 99% случаев говорит о том, что класс неправильно спроектирован.
Действительно ли в этом объекте нужны все эти поля? Как он используется? Какова его ЕДИНСТВЕННАЯ ОТВЕТСТВЕННОСТЬ?
Вот это экстрактится в класс CommentContent
this.urlImage = urlImage;
this.name = name;
this.dogName = dogName; //имя собаки?
this.text = text;
Для чего используются эти два свойства?
this.numberUserComments = numberUserComments;
this.numberLikeComents = numberLikeComents;
По CardObject. Все то-же, но и еще: у вас мешанина методов. Один конструктор сверху, другие разбросаны по тексту. Почитайте Роберта Мартина "Чистый код" раздел "Вертикальное форматирование"
Класс HTTP. По феншую лучше Http. Статика - зло. В данном случае лучше применить паттерн Singletone. Он тоже не сахар, но при умелой готовке вполне себе ничего.
ParsingPage - вообще жесть. Чистый Код в руки и читать до дыр. Методы адски перегружены логикой и вызывают кровотечение из глаз при попытке понять, что происходит. Для начала разбить монстров на кучу мелких методов, выполняющих атомарные операции и понять, что половина из них дублирует друг друга. Вообще данный класс штуки на 4 разбивать надо, на глаз если.
Например класс ParsingPage метод parsFullTag (закроем глаза на статику), первая итерация "причесывания"
private static NameAndTagFullInfoObject full;
private static String html;
public static NameAndTagFullInfoObject parsFullTag(String html) {
full = new NameAndTagFullInfoObject();
ParsingPage.html = html;
setName();
setUrlPhoto();
if (html.contains("
return full;
}
private static void setName() {
full.setName(html.split("
private static void setUrlPhoto() {
full.setUrlPhoto(tagContent("",1 ));
}
private static void setDopName() {
full.setDopName(divContent("page-header__subtitle\" itemprop=\"jobTitle",1 ));
}
private static void setContribution() {
full.setContribution(joinNewLine(divContent("mini-counter__count mini-counter__count-contribution", 1), divContent("mini-counter__value", 1));
}
private static void setQuestion() {
full.setQuestion(joinNewLine(divContent("mini-counter__count", 1), divContent("mini-counter__value", 2));
}
private static void setAnswer() {
full.setAnswer(joinNewLine(divContent("mini-counter__count", 2), divContent("mini-counter__value", 3));
}
private static void setDecisions() {
full.setDecisions(joinNewLine(divContent("mini-counter__count mini-counter__count-solutions", 1), divContent("mini-counter__value", 4)));
}
private static void setTextInto() {
full.setTextInfo(trim(html.split("
");
}
private static String joinNewLine(String first, String second) {
return first + "
" + second;
}
private static String divContent(String div, int position) {
return tagContent("
private static String tagContent(String start, String end, int position){
return trim(html.split(start)[position].split(end)[0]);
}
private static String trim(String string) {
return string.replaceAll("
", "").replaceAll(" ", "");
}
Код метода стал читаемым. Просто читая его сверху вниз понятно, что он делает.
Можно легко найти и поменять/отладить отдельные операции. Например если изменилась разметка для поиска setUrlPhoto мы правим один простой метод, который находится мнгновенно.
Методы trim, divContent, tagContent, joinNewLines прекрасно применяются ко всем остальным методам вашего класса, катастрофически повышая их читаемость и сокращая размер.
Есть код, который использует jq. Не хотелось бы загружать библиотеку , только из-за нескольких строк кода.
Помогите преобразовать код в чистый js.
$('document').ready(function(){
$('.historyAPI').on('click', function(e){
// отменяем стандартное действие при клике
e.preventDefault();
// Получаем адрес страницы
var href = $(this).attr('href');
// Передаем адрес страницы в функцию
getContent(href, true);
});
});
// Добавляем обработчик события popstate, происходящего при нажатии на кнопку назад/вперед в браузере
window.addEventListener("popstate", function(e) {
// Передаем текущий URL
getContent(location.pathname, false);
});
// Функция загрузки контента
function getContent(url, addEntry) {
$.get(url).done(function(data) {
// Обновление только текстового содержимого в блоке
$('#content').html($(data).find("#content").html());
$('#content2').html($(data).find("#content2").html());
// Если был выполнен клик в меню - добавляем запись в стек истории сеанса
// Если была нажата кнопка назад/вперед, добавлять записи в историю не надо
if(addEntry == true) {
// Добавляем запись в историю, используя pushState
history.pushState(null, null, url);
}
});
}
Пока что получилось вот так:
document.addEventListener('DOMContentLoaded',function(){
[].forEach.call( document.getElementsByClassName('historyAPI'), function(e) {
// отменяем стандартное действие при клике
e.preventDefault();
// Получаем адрес страницы
var href = $(this).attr('href');
// Передаем адрес страницы в функцию
getContent(href, true);
});
// Добавляем обработчик события popstate, происходящего при нажатии на кнопку назад/вперед в браузере
window.addEventListener("popstate", function(e) {
// Передаем текущий URL
getContent(location.pathname, false);
});
// Функция загрузки контента
function getContent(url, addEntry) {
$.get(url).done(function(data) {
// Обновление только текстового содержимого в сером блоке
$('#content').html($(data).find("#content").html());
$('#content2').html($(data).find("#content2").html());
// Если был выполнен клик в меню - добавляем запись в стек истории сеанса
// Если была нажата кнопка назад/вперед, добавлять записи в историю не надо
if(addEntry == true) {
// Добавляем запись в историю, используя pushState
history.pushState(null, null, url);
}
});
}
$('.historyAPI').on('click', function(e){
Лучше всё это заменить на обработку всплытия клика:
document.addEventListener('click', function (e) {
var a = e.target.closest("a.historyAPI");
a && getContent(a.href, true);
});
$.get(url).done(function(data) {
// Обновление только текстового содержимого в сером блоке
$('#content').html($(data).find("#content").html());
$('#content2').html($(data).find("#content2").html());
Приблизительно так:
fetch("url").then(function (resp) {
return resp.text();
}).then(function (data) {
var doc = (new DOMParser).parseFromString(data, "text/html");
for (var id of ["content", "content2"]) {
var dest = document.getElementById(id);
var elem = doc.getElementById(id);
if (elem) {
dest.parentElement.replaceChild(elem, dest);
} else {
dest.textContent = "";
}
}
Когда х>996 отказывается работать, помогите пожалуйста.
Собственно, код:
#include
int main()
{
int x, p, i, q, max, min;
scanf ("%d", &x);
int *a = (int*)malloc(abs(x)+1 * sizeof(int));
for (i=0; i<=abs(x); i++)
a[i] = i;
a[1]=0;
for (p=2; p<=abs(x); p++){
for (q=p*2; q<=abs(x); q+=p)
a[q]=0;
}
max=0;
if (x>=0){
for(i=0; i<=abs(x); i++)
if((a[i]!=0) && (abs(x)%a[i]==0))
if (a[i]>max)
max=a[i];
printf("%d", max);
free(a);
}
else{
min=abs(x);
for(i=0; i<=abs(x); i++)
if((a[i]!=0) && (abs(x)%a[i]==0))
if (a[i]
Не понимаю, что значат в этой программе отрицательные значения x, но в любом случае abs(x) вычислять надо 1 раз. Ошибка случается оттого, что вы выделяете память так
int *a = (int*)malloc(abs(x)+1 * sizeof(int));
а надо
int *a = (int*)malloc((abs(x)+1) * sizeof(int));
Код можно оптимизировать - максимальный делитель определить еще при построении решета.
#include
int main()
{
int x, p, i, q, max, min;
scanf ("%d", &x);
bool b=true;
if (x<0) b=false;
x=abs(x);
int *a = (int*)malloc((x+1) * sizeof(int));
for (i=0; i<=x; i++)
a[i] = i;
a[1]=0;
max=0;
min=0;
for (p=2; p<=x; p++){
if (a[p]==p)
for (q=p*2; q<=x; q+=p)
{
a[q]=0;
if(q==x) max=p;
if(q==x&&min==0) min=p;
}
}
if (b){
printf("%d", max);
free(a);
}
else{
printf ("%d", -min);
free(a);
}
_getch();
}
На сколько я знаю, то при создании процедуры к ней крепится на мертво план-выполнения, до тех пор пока сервер не перезагрузится, либо процедура пересоздастся, либо не будет запущена с опцией WITH RECOMPILE, что может повлечь за собой просадку производительности из-за устаревшего плана.
Предположим, процедура вызывает вложенные процедуры.
Если процедура, которая вызывается с WITH RECOMPILE вызывает внутри
себя процедуры без WITH RECOMPILE, то будет ли рассчитан оптимальный
план вызова внутренних процедур?
И наоборот: Что будет если внешняя процедура не имеет WITH RECOMPILE, а внутренние имеют.
План будет пересчитан только для родительской хранимой процедуры.
Тут обратная история, планы будут пересчитаны только для для дочерних.
Для проверки можете использовать:
select o.name, s.*
from master..syscacheobjects s
inner join sysobjects o
on s.objid = o.id
where s.dbid = DB_ID()
order by o.name
Начинаю учить Python 2.7. Надо отсортировать список предложений по количеству букв и слов. song - собственно сам файл со списком.
Чтобы отсортировать, подозреваю, надо играться с key, но не хватает у меня пока мыслей, как именно.
song = sys.argv[1]
w = open(song)
for line in sorted(w, key = int(len(line)))
print line
Параметр key должен быть функцией, принимающей текущий элемент и возвращающей значение, по которому сортируем. В данном случае достаточно просто len (приведение длины к целому излишне, т.к. len и так возвращает целое число):
song = sys.argv[1]
w = open(song)
for line in sorted(w, key=len)
print line
В более сложных случаях сортировки может понадобиться создать lambda-функцию (или даже выносить код в отдельную именованную функцию).
Для сортировки по количеству слов можно разбивать строку по пробельным символам с помощью метода строки split, и сортировать по количеству полученных кусков:
song = sys.argv[1]
w = open(song)
for line in sorted(w, key=lambda x: len(x.split()))
print line
Чтобы отсортировать строки по количеству слов, а слова в строках по количеству букв, можно сделать так:
Сначала просто создаем список строк, каждую строку разбиваем на слова:
lines = [line.rstrip().split() for line in file]
Добавляем сортировку слов внутри строк (это та же строка, просто добавили сортировку):
lines = [sorted(line.rstrip().split(), key=len) for line in file]
Добавляем сортировку строк по количеству слов (заменяю генератор списка на итератор - круглые скобки вместо квадратных):
lines = sorted((sorted(line.rstrip().split(), key=len) for line in file), key=len)
Т.к. строки уже разбиты на слова, то еще раз делать split не нужно, а просто сортируем по длине списка.
Ну и при выводе на экран собираем списки слов обратно в целые строки:
for line in lines:
print ' '.join(line)
Дополнение. Как правильно заметил jfs в комментариях к ответу, если файл сохранен например в utf-8 (вообще в любой не однобайтовой кодировке), то будет не подсчет символов, а подсчет байт, плюс не будет работать разбивка по юникодным пробельным символам.
Чтобы открыть файл в нужной кодировке, нужно использовать функцию io.open(). При открытии будет использоваться кодировка системы по-умолчанию. Чтобы использовать конкретную кодировку, можно указать ее при открытии:
import io
...
w = io.open(song, encoding='utf-8')
Есть другой поток, в нем должны изменяться контролы окна. А именно Image и ее свойство ToolTip. Код в WPF:
Код в C#:
FFM.Dispatcher.Invoke(new ThreadStart(delegate {; FFM.IconState.ToolTip = "Example tip 2"; })); //Обновляем ToolTip
BitmapImage ImageP = new BitmapImage(new Uri("/Images/ExImage2.png", UriKind.Relative)); //Объявляем изображение
FFM.Dispatcher.Invoke(new ThreadStart(delegate {; FFM.IconState.Source = ImageP; })); //Меняем изображение
На последней строчке у нас возникает исключение: System.InvalidOperationException: "Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток."
Почему так происходит? Ведь Dispatcher.Invoke не позволяет выполнению кода идти дальше, пока не придет ответ от диспетчера, тоесть ошибки по идее не должно существовать.
Проблема в том, что вы создаёте BitmapImage не в UI-потоке. Он считается при этом принадлежащим фоновому потоку (это и есть тот самый «другой поток» из вашего сообщения об ошибке), и не может использоваться в других потоках.
Выхода из этой ситуации возможно два:
Создавайте его в UI-потоке, используя тот же Dispatcher
Открепите ваш BitmapImage от создавшего его потока при помощи ImageP.Freeze(). При этом, правда, вы не сможете больше менять свойства этого объекта BitmapImage (но с хорошими шансами вам это и не нужно).
Кстати, вы можете вызывать код более просто синтаксически:
FFM.Dispatcher.Invoke(() => { FFM.IconState.ToolTip = "Example tip 2"; });
или даже
FFM.Dispatcher.Invoke(() => FFM.IconState.ToolTip = "Example tip 2");
можно ли начать читать файл с определенного места?например есть текст,обработал одно слово -закрыл файл,в другой функции открыл этот файл и начать читать следующее слово?искал ответ так и не нашел
пример использования функции fseek
#include
int main()
{
FILE * ptrFile = fopen( "example.txt" , "w" );
fputs( "This is sample." , ptrFile ); // записать в файл строку
fseek( ptrFile , 9 , SEEK_SET ); // изменить позицию на 9 байт относительно начала файла
fputs( "parta" , ptrFile ); // дописать слово в файл
fclose ( ptrFile );
return 0;
}
Есть несколько списков одинаковых.
Мне нужно сделать так, чтобы когда я в первом выбирал например первое значение это значение в других списках ставало disabled, или скрывалось.
А если я убираю активность с опции которую выбрал, то во всех селектах появлялся эта опция для выбора.
Как такое реализовать?
Если я вас правильно понял, вот так работает.
$('.change').on('change',function() {
$(this).children('option').each(function(){
var options = $('.change option[value='+$(this).val()+']').not(this);
if($(this).is(':selected')) {
$(options).prop('disabled',true);
$(options).prop('selected',false);
} else {
$(options).prop('disabled',false);
}
});
});
Есть какие соображения по этому поводу?
UseKestrel - это extension-метод. Проверь, есть ли ссылка на Microsoft.AspNetCore.Server.Kestrel.dll
Необходимо построить сочетания всех возможных размеров так, чтобы элементы в сочетаниях не совпадали (1,2,3; 1,3,2; 2,1,3; 2,3,1; 3,1,2; 3,2,1 - одни и те же сочетания)
Например, даны числа: 1,2,3,4
Ответ:
1
2
3
4
12
13
14
23
24
34
123
124
134
1234
Можно и псевдокод.
Вы забыли еще 234 и пустое сочетание :)
Берем число, каждому биту которого соответствует один элемент вашего множества, и проходим все числа в цикле - от 00..00 до 11..11. Все. Каждое число - это одно "сочетание" (вообще-то это генерация всех подмножеств данного множества), которое строим, выбирая элементы, соответствующие единичным битам...
Например, ваше 1234 - соответственно, 4-битное число...
0000 пустое множество
0001 1
0010 2
0011 12
0100 3
....
1110 432
1111 4321
Как мне тут менять свойства самого слова "Login"? Больше сделать его, или меньше. К какому селектору обращаться?
CSS не предоставляет возможности получить доступ к текстовому узлу (TextNode). Более того, это даже является излишним и совершенно ненужным, потому как все параметры текста внутри определенного элемента регулируются изменением свойств самого элемента.
Изменить цвет текста элемента можно при помощи свойства color, а его размер - при помощи свойства font-size
Создать несколько объектов (например, a и b) разработанного класса. Класс – вектор (одномерный массив). Реализовать для объектов данного класса перегрузку операции (): (a(i)=b(j))
В vanilla/plain Java нет перегрузки операторов.
Да, но если очень сильно постараться, то можно изобразить - через плагины к Java компилятору.
Есть например решение по перегрузке арифметических операторов - со скобками конечно будет сложнее. Но если хорошо подумать, наверное можно выкрутиться.