Language:

İletileri Göster

Bu özellik size üyenin attığı tüm iletileri gösterme olanağı sağlayacaktır . Not sadece size izin verilen bölümlerdeki iletilerini görebilirsiniz


Mesajlar - pisi_pisi

Sayfa: [1] 2 3
1
Python / Python3 icin PyQt5 Kurulumu
« : 18 Aralık 2015, 10:42:09 »
PyQT5 Kurulumu icin,

Kod: [Seç]
sudo pisi it python3-qt5
sudo pisi it python3-sip

mödüllerini kurmalisiniz.

2
İstek ve Öneriler / Ynt: Mobil cihazlar için bir uygulama
« : 17 Aralık 2015, 23:13:25 »
yakin zamanda yeni site tasarimina gecilir ise, jolyjokerz.com/pisi böyle olacak ve mobil, tablet vb. uyumluluk sorunu kalmayacaktir.

3
asagidaki kod blogunda, Bakkaliye uygulamasinin ilk taslak tasarimini ve bu tasarimdaki bir objenin nasil baglandigini görebilirsiniz.


Kod: [Seç]
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'bakkaliye_gui.ui'
#
# Created by: PyQt5 UI code generator 5.5.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 0, 781, 40))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.lineEdit = QtWidgets.QLineEdit(self.horizontalLayoutWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.lineEdit.sizePolicy().hasHeightForWidth())
        self.lineEdit.setSizePolicy(sizePolicy)
        self.lineEdit.setObjectName("lineEdit")
        self.horizontalLayout.addWidget(self.lineEdit)
        self.pushButton = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(10, 40, 781, 121))
        self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.pushButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)label
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())
        self.pushButton_2.setSizePolicy(sizePolicy)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout_2.addWidget(self.pushButton_2)
        self.horizontalLayoutWidget_3 = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget_3.setGeometry(QtCore.QRect(10, 170, 171, 381))
        self.horizontalLayoutWidget_3.setObjectName("horizontalLayoutWidget_3")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_3)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.listWidget = QtWidgets.QListWidget(self.horizontalLayoutWidget_3)
        self.listWidget.setObjectName("listWidget")
        self.horizontalLayout_3.addWidget(self.listWidget)
        self.horizontalLayoutWidget_4 = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget_4.setGeometry(QtCore.QRect(200, 170, 591, 381))
        self.horizontalLayoutWidget_4.setObjectName("horizontalLayoutWidget_4")
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_4)
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.listWidget_2 = QtWidgets.QListWidget(self.horizontalLayoutWidget_4)
        self.listWidget_2.setObjectName("listWidget_2")
        self.horizontalLayout_4.addWidget(self.listWidget_2)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 27))
        self.menubar.setObjectName("menubar")
        self.menuAyarlar = QtWidgets.QMenu(self.menubar)
        self.menuAyarlar.setObjectName("menuAyarlar")
        self.menuHakkinda = QtWidgets.QMenu(self.menubar)
        self.menuHakkinda.setObjectName("menuHakkinda")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionIndirme_Ayarlari = QtWidgets.QAction(MainWindow)
        self.actionIndirme_Ayarlari.setObjectName("actionIndirme_Ayarlari")
        self.actionIndirme_Ayarlari_2 = QtWidgets.QAction(MainWindow)
        self.actionIndirme_Ayarlari_2.setObjectName("actionIndirme_Ayarlari_2")
        self.actionDepo_Ayarlari = QtWidgets.QAction(MainWindow)
        self.actionDepo_Ayarlari.setObjectName("actionDepo_Ayarlari")
        self.actionBakkaliye = QtWidgets.QAction(MainWindow)
        self.actionBakkaliye.setObjectName("actionBakkaliye")
        self.actionG_ncelle = QtWidgets.QAction(MainWindow)
        self.actionG_ncelle.setObjectName("actionG_ncelle")
        self.menuAyarlar.addAction(self.actionIndirme_Ayarlari)
        self.menuAyarlar.addAction(self.actionIndirme_Ayarlari_2)
        self.menuAyarlar.addAction(self.actionDepo_Ayarlari)
        self.menuHakkinda.addAction(self.actionBakkaliye)
        self.menuHakkinda.addAction(self.actionG_ncelle)
        self.menubar.addAction(self.menuAyarlar.menuAction())
        self.menubar.addAction(self.menuHakkinda.menuAction())
        self.pushButton.clicked.connect(self.handleButton)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.lineEdit.setPlaceholderText(_translate("MainWindow", "Aranacak Kelime"))
        self.pushButton.setText(_translate("MainWindow", "PushButton"))
        self.pushButton_2.setText(_translate("MainWindow", "PushButton"))
        self.menuAyarlar.setTitle(_translate("MainWindow", "Ayar&lar"))
        self.menuHakkinda.setTitle(_translate("MainWindow", "&Hakkinda"))
        self.actionIndirme_Ayarlari.setText(_translate("MainWindow", "Listeleme Ayarlari"))
        self.actionIndirme_Ayarlari_2.setText(_translate("MainWindow", "Indirme Ayarlari"))
        self.actionDepo_Ayarlari.setText(_translate("MainWindow", "Depo Ayarlari"))
        self.actionBakkaliye.setText(_translate("MainWindow", "Bakkaliye"))
        self.actionG_ncelle.setText(_translate("MainWindow", "Güncelle"))
        label
    def handleButton(self):
        self.pushButton_2.setText('Button Clicked!')

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())


4
Python / Pyhton 3.5 & Sqlite3 Not Defteri Uygulamasi
« : 14 Aralık 2015, 23:22:34 »
Selamun Aleyküm,
Konsol üzerinden komut göndererek calisir..
Programi calistirdiginida kullanimina ait bilgi metni otomatik gelir.

Kod: [Seç]
import sqlite3
import sys
import argparse
from datetime import datetime, date

'''
VERITABANI ISLEMLERI
'''
# SQL Database Baglan, yok ise olustur
conn = sqlite3.connect('notdefteri.db')
c = conn.cursor()
def db_kapat():
    conn.close()
'''
ISLEMLER
'''
def kurulum():
# sqlite3 tablo olusturma
    c.execute('''CREATE TABLE notlar (id integer primary key autoincrement, tarih text, yazi text)''')
    conn.commit()
    db_kapat()
    print('Kurulum tamamlandi.')

def yeni(yazi):
    query = "INSERT INTO notlar (tarih, yazi) VALUES ('%s','%s');" % (datetime.now(), yazi)

    if(c.execute(query)):
        conn.commit()
        db_kapat()
        print("Not eklendi")
    else:
        print("Not eklenirken hata olustu.")


def sil(id):
    query = "DELETE FROM notlar WHERE id = '%s';" % id
    if(c.execute(query)):
        conn.commit()
        db_kapat()
        print("Not silindi")
    else:
        print("Boyle bir not Yok")



'''
GENEL KULLANIM
'''
def notlar():
    print("Notlar")
    for row in c.execute('SELECT * FROM notlar ORDER BY id'):
        print(row)
    db_kapat()


def aciklama():
    print('''
    mgNot | Siradan bir not tutucu

    Kullanim                                    |   aciklama
    ------------------------------------------------------------------
    python notdeferi.py -k                      |   Kurulum
    python notdeferi.py -notlar                 |   Tüm notlar
    python notdeferi.py -y -yazi "Yeni Notum"   |   Yeni not ekle
    python notdeferi.py -s -id notnumarasi          |   Numarali notu sil
    ''')

parser = argparse.ArgumentParser(description="Yardim Bölümüdür.")
parser.add_argument("-k", "--kurulum", help="kurulum",
                    action="store_true")
parser.add_argument("-notlar", "--notlar", help="notlar",
                    action="store_true")
parser.add_argument("-y", "--yeni", help="yeni not ekle",
                    action="store_true")
parser.add_argument("-s", "--sil", help="Numarasina göre notu sil",
                    action="store_true")
parser.add_argument("-id", "--id", type=int)
parser.add_argument("-yazi", "--yazi")

args = parser.parse_args()

if args.kurulum:
    kurulum()
if args.notlar:
    notlar()
if args.yeni:
    yeni(args.yazi)
if args.sil:
    sil(args.id)

5
Genel / Ynt: Pisilinux kurmak istiyorum
« : 01 Aralık 2015, 11:34:35 »
ben isyerinde ve evde VirtualBox üzerinden kullaniyorum, bilgisayarimdaki uefi sorunundan ötürü tam pisi linux kuramadim, yoksa iki parca olarak kullanacaktim. Kullanma ihtiyacina göre degisir. Eger internette gezme, ofis isleri, programlama vb. seyler yapacaksiniz sadece pisi linux'u kullanin derim. Yoksa 2 Parca halinde kurun, daha sonra siz kendinizide görmüs olursunuz, ondan sonra pisi ihtiyacinizi gördügünü anladiginizda windowsu kaldirirsiniz veya bu sekilde karar vermeniz daha rahat olur.


6
Genel / Pisi Linux 2.0 Alfa 6 Virtualbox Siyah Ekran
« : 27 Kasım 2015, 15:18:58 »
Pisi Linux 2.0 Alfa 6'yi Virtualbox ile kurdum terminal acilisindan sonra Masaüstü gelmeden siyah ekran'da kaliyor.
Video Linki: http://webm.land/media/JdwR.webm

7
Genel / Ynt: Github depoları hakkında
« : 27 Kasım 2015, 11:48:17 »
yalnis anlamis olabilirim elbette Pisi linux'un git reposunu, ama anladigim kadariyla aktariyorum.

https://github.com/pisilinux/main
https://github.com/pisilinux/core
suan aktif olarak kullaniliyor cünkü 2.0 versiyonu icin gerekli güncellemeler core ve main'de genelde..

https://github.com/pisilinux/PisiLinux ise gelistirme yapmak isteyenlere yol göstermek icin kurulmus bir repo gibi duruyor.. yani eger gelistirme baslangicinda degistirmek istedigin birseyler varsa elbette oraya pull-request yapmalisin, yok eger core güncellemesiyse core reposuna, yok main reposunda degisiklik yapmak istiyorsan main reposuna pull request yapmalisin..

Keske bende phtyon bilsem yada ögrenebilsem, yada paket yapmayi bilsem, yardim etmek cok isterdim..

8
İstek ve Öneriler / Pisi Linux Yol Haritasi
« : 26 Kasım 2015, 10:20:12 »
Pisi Linux yol haritasinin cikarilmasi icin birsey yapmak gerekli mi?
Anladigim kadariyla tüm gönüllüler suanlik ne yapiyor ne ediyor pek plansiz gibi diyor.
Acaba diyorum bir web uygulamasi üzerinden yapilacaklari listelesek ve, bu listeyede gönüllü olan bizler ve sistem gelistiriceleri bakarak "sunu yapiyoruz, surada kaldik,sunu yapacaz, sunu yaptik" gibi bir kullanim detayi olsa nasil olur?
Örnegin Birkac Ana Kategori Belirleriz.

Masaüstü                                                                             Sistem                                                                 Paket
-> Pisi Fontu belirlenmesi                                                     -> Linux Kernel 3.6x uyumu saglanmasi              -> Bakkal Uygulamasi Plani
-> Arkaplanlarin belirlenmesi                                                -> XXX paket uyumsuzlu cözülmesi                     -> XXX Uygulamasi
-> Pisi Temasinin baslangici icin Pencere Stilleri                   -> XXX ......

gibi, gibi... daha sonra her basligin yanina, bu göreve katil gibi birsey yapar ve orada takimdakilerin birbiriyle uyumlu calismasi icin  ic sayfada güzelce tasarlanir?

9
Yeni Fikirler / Pisi Linux Bakkal Önerisi?
« : 25 Kasım 2015, 10:57:51 »
Pisi Linux'un market uygulamasi PHP üzerinden programlasam, Bunu Pisi Linux'a adapte etmede problem yasarmiyiz? Acizanede bildigim kadariyla PHP'de shell_exec komutu ile konsolu kullanabiliyoruz, ayni sekilde bash scriptleride. Atladigim yada gözden kacirdigim bir uyumsuzluk sorunu olur mu? var mi, yok mu ? yada bunu phyton yazilimina sadece tarayici olarak kullandirip siteyi cektirsek olurmu?

10
tesekkürler

11
Yapılandırma / Sistem Acilisinda otomatik servisleri baslatma
« : 25 Kasım 2015, 09:51:00 »
Kod: [Seç]
sudo service apache start
sudo service mariadb-server start
sudo service openssh start

bu komutlari sistem acilisina nasil eklerim?

12
Cözüldü, Paket yöneticinden, Kurulu paketlerden Xorg Paketini aratip, Listede cikan tüm paketleri kaldirip, yeniden baslattiginizda artik terminal olarak kullanabilirsiniz

13
Kurulum / Ynt: Pisi Linux Boot Menü Ekleme
« : 24 Kasım 2015, 10:41:51 »
malesef öylede olmadi, onuda denedim, bir cok varyasyonu denedim acikcasi fakat muvaffak olamadim.

14
Selamun Aleyküm,
Öncelikle http://forum.pisilinux.org/nasil-belgeleri/pisi-linux-lamp-kurulumu/ bu konuyu okudunuz ve yaptiniz varsayarak kaldigimiz yerden devam ediyorum, En son IPimizi ögrenmistik ve tarayicidan baglanmistik.
ben domain olarak pisiserver belirliyorum. siz dilediginiz gibi yapabilirsiniz.

Video Linki
http://webm.land/media/Ibga.webm

Domain belirleme;
Domainimizi Ana Bilgisayarimizin
Kod: [Seç]
C:\Windows\System32\drivers\etc klasörünün altindaki, hosts dosyasini metin editörü ile aciyor ve bu sekilde düzenliyoruz.

daha sonra tarayicimizdan artik pisiserver/ yazarak servere baglanabilirsiniz. örnek olarka ben ek bir proje adreside ekledim proje1.pisiserver
* domainin sondaki "/" karakteri http://pisiserver/ in kisaltmasidir.



Daha sonra uzaktan baglanmak icin SSH kurulumu yapmamiz gerekiyor ki, kullanimda kolaylik olsun.
openssh kurulum icin (yoksa);
Kod: [Seç]
sudo pisi it opensshSSH Keygen olusturma:
Kod: [Seç]
ssh-keygen -t rsahepsine ENTER yaparak gecebilirsiniz
SSHD config ayarlama:
Kod: [Seç]
sudo nano /etc/ssh/sshd_configacilan ayar dosyasinda sadece port 22 satirinin basindaki '#' ve biraz daha alttaki PermitRootLogin'in basindaki '#' karakteri siliyoruz.
Kod: [Seç]
...
....
...
Port 22 // Eski Hali #Port 22
....
....
...
...
PermitRootLogin yes // Eski Hali #PermitRootLogin yes
...
..
CTRL + X, Arkasindan E tusu ve Enter yaparak, kaydediyoruz.
OpenSSH Baslatma:
Kod: [Seç]
sudo service openssh start
sudo service openssh on
Güvenli FTP protokolu olan SFTP ile baglanma:

sonuc :


simdi bir server yönetim programi yükleyerek, daha sonraki projelerimizde bunlari otomatik yapmasini saglamayiz, aksi takdirte her proje icin server tarafindan yeni conflar ve klasör yapilarini olusturmamiz gerek;

örnegin manuel yapmaya kalkarsak :
apache default site.confu kopyalip
proje1.conf seklinde kaydedip icerisinde server dosya yolunu yazmamiz gerekir.
örnegin var/www/proje1 klasör yolunu olusturup ayni sekilde bu projenin kullanicisini olusturmamiz gerekir grubuyla birlikte,
o yüzden bunlari manuel hemen yapmaniz zor olur.

Bunun icin Türkiyede genelde Hostingler sanirim Cpanel ve Plesk kullaniyor, fakat bunlar parali yazilimlar olduklari icin bunlarin kurulumu yerine Virtualmin 'in kurulunumu anlatmayi düsünüyorum insaAllah

15
Nasıl Belgeleri / Pisi Linux LAMP Kurulumu + VIDEO Kurulum
« : 23 Kasım 2015, 15:14:09 »
Selamun Aleyküm, bu konuda sizlere Pisi Linux LAMP Kurulumunu anlatmaya calisacagim,  Burada serverimzie IP üzerinden baglanip kullanmayianlatacagiz, ileride ders'te projelerimzie domain belirleme ve projeleri yönetmeyi kolaylastirmak adina bir server yönetim paneli kurmayi anlatiriz insaAllah,


Video Linki
http://webm.land/media/Ibga.webm

Virtualbox kullananlara Öncelikli Tavsiyeler;
komutlari uygulamaktan cekinen arkadaslar icin, Virtualbox'un su özelligini kullanmalarini tavsiye ederim, bu sayede komutlari buradan kopyala yapistir olarak kullanabilirler,

Ayrica Ethernet Kart ayarinida su sekilde ayarlamalari kolaylik olacaktir.

Faydasi olmasi ümidiyle, su an itibariyle Wiki adresimiz calismadigi icin buraya acilmistir.
Dilegen, bu konuyu diledigi gibi degistirebilir, dagitabilir ve kullanabilir.

Amac : Php ile yazilim gelistiren kisilerin,
  • Her isyerindeki bilgisayarlara localhost yazilimlari(Xamp, Wampp vb.) kurma ve yapilandirmalarina ugrasmamak,
  • Server yönetim bilgisi ve tecrübesi kazanmalari,
  • Hazirlanan projelerin internetteki serverler ile tam uyumlu calismasina olanak saglanmasi,
  • Konsol ve Komut kullanimina alismak,
Pisi Linux 1.2 KDE kurulduktan sonra Paket yöneticisine girip, Kurulu Paketlerden, Xorg'u aratip gelen lsitedeki tüm paketleri kaldiriyor ve yeniden baslatiyoruz. bu sekilde server kullanimina uygun konsol haline getirmis oluyoruz.

Yada Masaüstündeyken,

Ctrl + Alt + Del
tusuna basarak konsol'a gecebiliyoruz.


Kullanici girisimizi yapiyoruz.



Sirasiyla, Apache, mariadb (mySQL), PHP ve PHPMYADMIN kurulumu ve yapilandirmasina geciyoruz.

Apache Kurulum;
Kod: [Seç]
sudo pisi it apacheApache servisimizi baslatma ve her acilista otomatik baslatma;
Kod: [Seç]
sudo service apache start
sudo service apache on

Php Eklenti Kurulum;
Kod: [Seç]
sudo pisi it mod_phpKurulumda Paket Bagimliliklarininda yüklenmesiyle ilgili onay alacaktir.
Kod: [Seç]
Evet
yazarak kuruluma devam ediniz.


Mariadb (mySQL) Kurulum:
Kod: [Seç]
sudo pisi it mariadb-serverMariadb (mySQL) baslatma  ve her acilista otomatik baslatma;
Kod: [Seç]
sudo service mariadb-server start
sudo service mariadb-server on


Mariadb Standart Kurulumu:
Kod: [Seç]
sudo mysql_secure_installation
Kod: [Seç]
Enter current password for root (enter for none) : Enter Basiyoruz
set root password : Y yazip, enter basiyoruz
New password: pisiserver (ben böyle yazacagim, siz dilediginizi yazabilirsiniz)
Re-enter new password : pisiserver
Remove anonymous user : Y yazip, enter basiyoruz
Disallow root login remotely: Y yazip, enter basiyoruz
Remove test database and access to it ?:  N yazip, enter basiyoruz
Reload privilege tables now? : Y yazip, enter basiyoruz


NOT: Yeni Database ve Kullanici olusturmak;
Kod: [Seç]
mysql -u root -p
create database pisidb;
create user 'pisidbuser'@localhost identified by 'pisiserver';
grant all on pisidb.* to 'pisidbuser';

mariaDB konsolundan cikis;
Kod: [Seç]
exit
phpMyAdmin kurulumu;
Kod: [Seç]
sudo pisi it phpmyadmin
phpMyadmin'e uzaktan ulasmaktan icin ayar yapmamiz gerekiyor,Ayar dosyasini acalim;
Kod: [Seç]
sudo nano /etc/apache2/conf.d/phpmyadmin.confbu satiri;

bu sekilde degistirelim;


Dosyayi Kaydetmek icin;
CTRL + X, cikan uyariya E yazip enter basiyoruz, Yazilacak Dosya uyarisinada birsey yapmadan enter basiyoruz.

ve son islem olarak yaptigimiz degisikliklerin aktif olmasi icin apacheyi tekrar baslatiyoruz.
Kod: [Seç]
sudo service apache restart

Hepsi bu kadar, simdi gelelim serverimize baglanmaya, bunun icin 2 yol  var biri IP biride domain belirlemek;
IP üzerinden Servere baglanmak icin konsola
Kod: [Seç]
ifconfigyazarak IP adresmizi aliyoruz.


benim IP'im : 192.168.178.138 bunu tarayica yazdigimida;


buda phpMyadmin;

Sayfa: [1] 2 3
Yukarı Çık & Back to Up