BItrix CIBlockElementRights расширенные права — blog.t2er.com:
'via Blog this'
Tuesday, January 20, 2015
Установка ftp на VM Bitrix
Делаем так, взято тут
Для открытия и разделения доступа к папкам по ftp мы сделали следующее:
1. установка ftp демона для Centos
yum install proftpd
2. Ставим эту службу в автозагрузку
chkconfig proftpd on
3. Стартуем сервис
service proftpd start
4. Узнаем id группы и id пользователя, под которым работает Apache. По умолчанию логин и группа этого пользователя - bitrix
[root@CentOS-65-64-minimal ~]# id bitrix
uid=501(bitrix) gid=501(bitrix) groups=501(bitrix)
5. Создаем пользователя с идентификаторами пользователя и группы bitrix для нужной нам директории
adduser userlogin -g501 -o -u501 -d /home/bitrix/www/
6. Задаем пароль пользователю
passwd userlogin
Все. Теперь у нас есть ftp пользователь с доступом только на определенный сайт или раздел сайта в зависимости от заданного пути.
Далее, взято тут
Как правило, режим передачи (активный/пассивный) определяется в настройках FTP-клиента. Большинство клиентов, к сожалению, используют пассивный режим по умолчанию.
Если по какой-то причине активный режим использовать не получается, например, из-за ограничений клиента, или настроек сетевого фильтра на стороне клиента, то на стороне сервера необходимо выполнить дополнительные действия, как то:
Отредактировать шестую строку в файле /etc/sysconfig/iptables-config: заменить IPTABLES_MODULES="" на IPTABLES_MODULES="ip_conntrack_ftp".
Перезапустить iptables:
Код
service iptables save
service iptables restart
После этого FTP заработает в обоих режимах.
После этого в файлике /etc/sysconfig/iptables
добавляем следующий строки
П.С. Вот только после этого у меня заработало...
Для открытия и разделения доступа к папкам по ftp мы сделали следующее:
1. установка ftp демона для Centos
yum install proftpd
2. Ставим эту службу в автозагрузку
chkconfig proftpd on
3. Стартуем сервис
service proftpd start
4. Узнаем id группы и id пользователя, под которым работает Apache. По умолчанию логин и группа этого пользователя - bitrix
[root@CentOS-65-64-minimal ~]# id bitrix
uid=501(bitrix) gid=501(bitrix) groups=501(bitrix)
5. Создаем пользователя с идентификаторами пользователя и группы bitrix для нужной нам директории
adduser userlogin -g501 -o -u501 -d /home/bitrix/www/
6. Задаем пароль пользователю
passwd userlogin
Все. Теперь у нас есть ftp пользователь с доступом только на определенный сайт или раздел сайта в зависимости от заданного пути.
Далее, взято тут
Как правило, режим передачи (активный/пассивный) определяется в настройках FTP-клиента. Большинство клиентов, к сожалению, используют пассивный режим по умолчанию.
Если по какой-то причине активный режим использовать не получается, например, из-за ограничений клиента, или настроек сетевого фильтра на стороне клиента, то на стороне сервера необходимо выполнить дополнительные действия, как то:
Отредактировать шестую строку в файле /etc/sysconfig/iptables-config: заменить IPTABLES_MODULES="" на IPTABLES_MODULES="ip_conntrack_ftp".
Перезапустить iptables:
Код
service iptables save
service iptables restart
После этого FTP заработает в обоих режимах.
После этого в файлике /etc/sysconfig/iptables
добавляем следующий строки
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT.
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT.
П.С. Вот только после этого у меня заработало...
Wednesday, January 14, 2015
Creating an Alternate-Colored List View in Android
Как сделать брал тут Creating an Alternate-Colored List View in Android | Androidie:
'via Blog this'
Доступно и понятно как разукрасить listview, пришлось поискать как разукрасить
мини код моей реализации
'via Blog this'
Доступно и понятно как разукрасить listview, пришлось поискать как разукрасить
мини код моей реализации
public class ParseGroupViewAdapter extends ParseQueryAdapter<ParseGroups> { private final int[] bgColors = new int[]{Color.rgb(245, 245, 245), Color.rgb(224, 255, 255)}; private Context context; private LayoutInflater inflater; private ImageLoader imageLoader; private LinkedHashSet mySet; public ParseGroupViewAdapter(Context context) { super(context, new ParseQueryAdapter.QueryFactory<ParseGroups>() { public ParseQuery create() { ParseQuery query = ParseGroups.getQuery(); query.setMaxCacheAge(TimeUnit.HOURS.toMillis(4)); query.setCachePolicy(ParseQuery.CachePolicy.CACHE_ELSE_NETWORK); query.whereEqualTo("parentid", "00000000-0000-0000-0000-000000000000"); query.whereEqualTo("Enable", true); query.orderByAscending("sortcode"); return query; } }); this.context = context; inflater = LayoutInflater.from(context); this.imageLoader = ImageLoader.getInstance(); this.mySet = new LinkedHashSet(); } public ParseGroupViewAdapter(Context context, final String parentId) { super(context, new ParseQueryAdapter.QueryFactory<ParseGroups>() { public ParseQuery create() { ParseQuery query = ParseGroups.getQuery(); query.setMaxCacheAge(TimeUnit.HOURS.toMillis(4)); query.setCachePolicy(ParseQuery.CachePolicy.CACHE_ELSE_NETWORK); query.whereEqualTo("parentid", parentId); query.orderByAscending("sortcode"); return query; } }); this.context = context; inflater = LayoutInflater.from(context); this.imageLoader = ImageLoader.getInstance(); this.mySet = new LinkedHashSet(); } /** * Notifies the attached observers that the underlying data has been changed * and any View reflecting the data set should refresh itself. */ @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); } @Override public View getItemView(ParseGroups object, View view, ViewGroup parent) { final ViewHolder holder; if (view == null) { holder = new ViewHolder(); view = inflater.inflate(R.layout.groupview, null); holder.tvGroupName = (TextView) view.findViewById(R.id.tvName); holder.ivGroup = (ParseImageView) view.findViewById(R.id.imageView3); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } super.getItemView(object, view, parent); mySet.add(object); int colorPosition = new ArrayList<ParseItems>(mySet).indexOf(object) % bgColors.length; view.setBackgroundColor(bgColors[colorPosition]); holder.tvGroupName.setText(object.getString("name")); ParseFile photoFile = object.getParseFile("image"); // holder.ivGroup.setParseFile(photoFile); // holder.ivGroup.loadInBackground(); ImageLoader imageLoader = ImageLoader.getInstance(); if (photoFile != null) { imageLoader.displayImage(photoFile.getUrl(), holder.ivGroup); } // else // { // holder.ivGroup = null; // } return view; } public class ViewHolder { TextView tvGroupName; ParseImageView ivGroup; } }
Saturday, January 3, 2015
Публикация картинок на parse.com
Решил переделать схему работы на мобильных устройствах в связи с проблемами в работе SOAP, постоянная не хватка памяти и проблемы в работе с 1С (Скорость и ключи). Возникла проблема в передаче на parse.com картинок в правильном формате, заставила данная проблема повозиться и поискать решений, итого код:
ХТТП = Новый COMОбъект("Microsoft.XMLHTTP"); ХТТП.Open("GET", "https://api.parse.com/1/login?username=1&password=F7/83?b5bf", Ложь); ХТТП.SetRequestHeader("Host", "api.parse.com"); ХТТП.SetRequestHeader("Content-Type", "application/json"); ХТТП.SetRequestHeader("X-Parse-Application-Id", "*********************************************"); ХТТП.SetRequestHeader("X-Parse-REST-API-Key","****************************************"); ХТТП.Send(""); Ses = json.ПрочитатьJSON(ХТТП.ResponseText); sessionToken = Ses.Получить("sessionToken"); ТНом = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("c564fdf4-247e-11e4-9dd2-000c29ce19d5")); СсылкаНаФайл = РаботаСПрайсами.ПолучениеКартинкиНоменклатуры(ТНом,"png",200,200,50,true); Если не СсылкаНаФайл=неопределено тогда adoStream = Новый COMОбъект("ADODB.Stream"); adoStream.Mode = 3; // read write adoStream.Type = 1; // adTypeBinary adoStream.Open(); adoStream.LoadFromFile(СсылкаНаФайл); adoStream.Position = 0; connectstring = "https://api.parse.com/1/files/"+Строка(ТНом.УникальныйИдентификатор())+".png"; request = "POST"; ХТТП.Open(request, connectstring, Ложь); ХТТП.SetRequestHeader("Host", "api.parse.com"); ХТТП.SetRequestHeader("Content-Type", "image/png"); ХТТП.SetRequestHeader("X-Parse-Application-Id", "***********************************"); ХТТП.SetRequestHeader("X-Parse-REST-API-Key","******************************"); ХТТП.SetRequestHeader("X-Parse-Session-Token",sessionToken); ХТТП.Send(adoStream.Read(adoStream.Size)); Сообщить(ХТТП.Status); Сообщить( ХТТП.ResponseText); ТСО = json.ПрочитатьJSON(ХТТП.ResponseText); fileName = ТСО.Получить("name"); КонецЕсли;
Subscribe to:
Posts (Atom)