Threads, tashmë i aksesueshëm edhe në vendet e Bashkimit Europian
Shkencë dhe teknologji

Threads, tashmë i aksesueshëm edhe në vendet e Bashkimit Europian

21.Dec.2023 07:27
0

Rreth gjashtë muaj pas daljes në treg, Meta njoftoi sot se Threads është më në fund i aksesueshëm edhe brenda vendeve të Bashkimit Europian.

Përdoruesit evropianë tashmë mund ta lidhin profilin e tyre në Instagram  me platformën më të re të mediave sociale.

Çfarë është Threads?

Instagram Threads është në thelb “Twitter-i” i Metës, kompanisë mëmë të Facebook. Ndoshta nuk ka një mënyrë më të shpejtë dhe më të kuptueshme për të përshkruar rrjetin social në fjalë.

Gjithashtu sepse është evidente se ka lindur me synimin për të zënë vendin e “zogut të vogël blu”, duke përfituar nga një periudhë krize që zgjat prej vitesh dhe që arriti kulmin me blerjen dhe menaxhimin e Elon Musk.

 

Avantazhi i madh i Threads, megjithatë, është se nuk keni nevojë të krijoni një llogari për ta përdorur atë. Rrjeti i ri social është në fakt një lloj zgjerimi i Instagramit dhe përdoruesit e regjistruar në rrjetin social fotografik Meta mund të lidhin të dy platformat, duke u identifikuar me të njëjtën llogari.

Mund të themi se nëse Instagrami është vendi ku ndani foto dhe video, Threads është vendi ku postoni mendime dhe opinione.

Pse Threads po mbërrin në hapësirën e Unionit vetëm sot?

Deri më tani Threads nuk ka mbërritur në Evropë për çështje të privatësisë. Në fakt, që Threads të pajtohej me rregulloret e BE-së, rrjetit social do t'u duhej t'u ofronte përdoruesve në rajon një modalitet vetëm për shikimin e aplikacionit (një funksion që nuk përfshihet në versionin e parë të platformës).

Modaliteti "vetëm shikim" do të thotë që, për të konsumuar përmbajtjen, përdoruesit nuk do të detyrohen të krijojnë një profil.

Një problem i zgjidhur në masë të madhe, siç u konfirmua sot zyrtarisht nga Meta. Në një njoftim për shtyp kompania bëri të ditur:

 

“Njerëzit në BE mund të zgjedhin të krijojnë një profil Threads të lidhur me llogarinë e tyre në Instagram, që do të thotë se do të kenë të njëjtën përvojë si të gjithë të tjerët në botë, ose të përdorin Threads pa profil. Ata që përdorin Threads pa profil do të jenë në gjendje të shohin përmbajtje në Threads, të kërkojnë profile, të ndajnë përmbajtje nëpërmjet linqeve ose nga platforma dhe të raportojnë përmbajtjen e Threads, por nuk do të jenë në gjendje të ndërveprojnë me përmbajtjen."

Registration Login
Sign in with social account
or
Remember Me Lost your Password?
Registration Login
Sign in with social account
or
With registration you can comment on post.
Registration Login
Registration
Whoops! There was an error.
ErrorException (E_WARNING)
file_put_contents(): Only 0 of 273 bytes written, possibly out of free disk space ErrorException thrown with message "file_put_contents(): Only 0 of 273 bytes written, possibly out of free disk space" Stacktrace: #7 ErrorException in /home/titulli/public_html/19titulli/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122 #6 file_put_contents in /home/titulli/public_html/19titulli/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122 #5 Illuminate\Filesystem\Filesystem:put in /home/titulli/public_html/19titulli/vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.php:83 #4 Illuminate\Session\FileSessionHandler:write in /home/titulli/public_html/19titulli/vendor/laravel/framework/src/Illuminate/Session/Store.php:128 #3 Illuminate\Session\Store:save in /home/titulli/public_html/19titulli/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:87 #2 Illuminate\Session\Middleware\StartSession:terminate in /home/titulli/public_html/19titulli/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:218 #1 Illuminate\Foundation\Http\Kernel:terminateMiddleware in /home/titulli/public_html/19titulli/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:189 #0 Illuminate\Foundation\Http\Kernel:terminate in /home/titulli/public_html/19titulli/public/index.php:60
7
ErrorException
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Filesystem
/
Filesystem.php
122
6
file_put_contents
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Filesystem
/
Filesystem.php
122
5
Illuminate
\
Filesystem
\
Filesystem
put
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
FileSessionHandler.php
83
4
Illuminate
\
Session
\
FileSessionHandler
write
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
Store.php
128
3
Illuminate
\
Session
\
Store
save
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
Middleware
/
StartSession.php
87
2
Illuminate
\
Session
\
Middleware
\
StartSession
terminate
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Foundation
/
Http
/
Kernel.php
218
1
Illuminate
\
Foundation
\
Http
\
Kernel
terminateMiddleware
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Foundation
/
Http
/
Kernel.php
189
0
Illuminate
\
Foundation
\
Http
\
Kernel
terminate
/
public
/
index.php
60
/
home
/
titulli
/
public_html
/
19titulli
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Filesystem
/
Filesystem.php
     *
     * @param  string  $path
     * @return string
     */
    public function hash($path)
    {
        return md5_file($path);
    }
 
    /**
     * Write the contents of a file.
     *
     * @param  string  $path
     * @param  string  $contents
     * @param  bool  $lock
     * @return int
     */
    public function put($path, $contents, $lock = false)
    {
        return file_put_contents($path, $contents, $lock ? LOCK_EX : 0);
    }
 
    /**
     * Prepend to a file.
     *
     * @param  string  $path
     * @param  string  $data
     * @return int
     */
    public function prepend($path, $data)
    {
        if ($this->exists($path)) {
            return $this->put($path, $data.$this->get($path));
        }
 
        return $this->put($path, $data);
    }
 
    /**
     * Append to a file.
Arguments
  1. "file_put_contents(): Only 0 of 273 bytes written, possibly out of free disk space"
    
/
home
/
titulli
/
public_html
/
19titulli
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Filesystem
/
Filesystem.php
     *
     * @param  string  $path
     * @return string
     */
    public function hash($path)
    {
        return md5_file($path);
    }
 
    /**
     * Write the contents of a file.
     *
     * @param  string  $path
     * @param  string  $contents
     * @param  bool  $lock
     * @return int
     */
    public function put($path, $contents, $lock = false)
    {
        return file_put_contents($path, $contents, $lock ? LOCK_EX : 0);
    }
 
    /**
     * Prepend to a file.
     *
     * @param  string  $path
     * @param  string  $data
     * @return int
     */
    public function prepend($path, $data)
    {
        if ($this->exists($path)) {
            return $this->put($path, $data.$this->get($path));
        }
 
        return $this->put($path, $data);
    }
 
    /**
     * Append to a file.
Arguments
  1. "/home/titulli/public_html/19titulli/storage/framework/sessions/zpg1ZNs1h7AeiXdd4kpZvggMbAFNJ1MiCnLnerew"
    
  2. "a:3:{s:6:"_token";s:40:"YYJ6WgC6LAJXR7f2tVZayHxH5BUAvLBVFU7PSIM0";s:9:"_previous";a:1:{s:3:"url";s:114:"http://www.titulli.com/19titulli/public/index.php/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}"
    
  3. 2
    
/
home
/
titulli
/
public_html
/
19titulli
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
FileSessionHandler.php
    /**
     * {@inheritdoc}
     */
    public function read($sessionId)
    {
        if ($this->files->exists($path = $this->path.'/'.$sessionId)) {
            if (filemtime($path) >= Carbon::now()->subMinutes($this->minutes)->getTimestamp()) {
                return $this->files->get($path, true);
            }
        }
 
        return '';
    }
 
    /**
     * {@inheritdoc}
     */
    public function write($sessionId, $data)
    {
        $this->files->put($this->path.'/'.$sessionId, $data, true);
 
        return true;
    }
 
    /**
     * {@inheritdoc}
     */
    public function destroy($sessionId)
    {
        $this->files->delete($this->path.'/'.$sessionId);
 
        return true;
    }
 
    /**
     * {@inheritdoc}
     */
    public function gc($lifetime)
    {
        $files = Finder::create()
Arguments
  1. "/home/titulli/public_html/19titulli/storage/framework/sessions/zpg1ZNs1h7AeiXdd4kpZvggMbAFNJ1MiCnLnerew"
    
  2. "a:3:{s:6:"_token";s:40:"YYJ6WgC6LAJXR7f2tVZayHxH5BUAvLBVFU7PSIM0";s:9:"_previous";a:1:{s:3:"url";s:114:"http://www.titulli.com/19titulli/public/index.php/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}"
    
  3. true
    
/
home
/
titulli
/
public_html
/
19titulli
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
Store.php
     *
     * @param  string  $data
     * @return string
     */
    protected function prepareForUnserialize($data)
    {
        return $data;
    }
 
    /**
     * Save the session data to storage.
     *
     * @return bool
     */
    public function save()
    {
        $this->ageFlashData();
 
        $this->handler->write($this->getId(), $this->prepareForStorage(
            serialize($this->attributes)
        ));
 
        $this->started = false;
    }
 
    /**
     * Prepare the serialized session data for storage.
     *
     * @param  string  $data
     * @return string
     */
    protected function prepareForStorage($data)
    {
        return $data;
    }
 
    /**
     * Age the flash data for the session.
     *
     * @return void
Arguments
  1. "zpg1ZNs1h7AeiXdd4kpZvggMbAFNJ1MiCnLnerew"
    
  2. "a:3:{s:6:"_token";s:40:"YYJ6WgC6LAJXR7f2tVZayHxH5BUAvLBVFU7PSIM0";s:9:"_previous";a:1:{s:3:"url";s:114:"http://www.titulli.com/19titulli/public/index.php/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}"
    
/
home
/
titulli
/
public_html
/
19titulli
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Session
/
Middleware
/
StartSession.php
        if ($this->sessionConfigured()) {
            $this->storeCurrentUrl($request, $session);
 
            $this->addCookieToResponse($response, $session);
        }
 
        return $response;
    }
 
    /**
     * Perform any final actions for the request lifecycle.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Symfony\Component\HttpFoundation\Response  $response
     * @return void
     */
    public function terminate($request, $response)
    {
        if ($this->sessionHandled && $this->sessionConfigured() && ! $this->usingCookieSessions()) {
            $this->manager->driver()->save();
        }
    }
 
    /**
     * Start the session for the given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Contracts\Session\Session
     */
    protected function startSession(Request $request)
    {
        return tap($this->getSession($request), function ($session) use ($request) {
            $session->setRequestOnHandler($request);
 
            $session->start();
        });
    }
 
    /**
     * Get the session implementation from the manager.
/
home
/
titulli
/
public_html
/
19titulli
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Foundation
/
Http
/
Kernel.php
     * @return void
     */
    protected function terminateMiddleware($request, $response)
    {
        $middlewares = $this->app->shouldSkipMiddleware() ? [] : array_merge(
            $this->gatherRouteMiddleware($request),
            $this->middleware
        );
 
        foreach ($middlewares as $middleware) {
            if (! is_string($middleware)) {
                continue;
            }
 
            list($name) = $this->parseMiddleware($middleware);
 
            $instance = $this->app->make($name);
 
            if (method_exists($instance, 'terminate')) {
                $instance->terminate($request, $response);
            }
        }
    }
 
    /**
     * Gather the route middleware for the given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    protected function gatherRouteMiddleware($request)
    {
        if ($route = $request->route()) {
            return $this->router->gatherRouteMiddleware($route);
        }
 
        return [];
    }
 
    /**
Arguments
  1. Request {
      #json: null
      #convertedFiles: null
      #userResolver: Closure {
        class: "Illuminate\Auth\AuthServiceProvider"
        this: AuthServiceProvider { …}
        parameters: {
          $guard: {
            default: null
          }
        }
        use: {
          $app: Application { …}
        }
      }
      #routeResolver: Closure {
        class: "Illuminate\Routing\Router"
        this: Router { …}
        use: {
          $route: Route { …}
        }
      }
      +attributes: ParameterBag {}
      +request: ParameterBag {#1}
      +query: ParameterBag {#1}
      +server: ServerBag {}
      +files: FileBag {}
      +cookies: ParameterBag {}
      +headers: HeaderBag {}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian"
      #requestUri: "/19titulli/public/index.php/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian"
      #baseUrl: "/19titulli/public/index.php"
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: "/19titulli/public"
      format: "html"
    }
    
  2. Response {}
    
/
home
/
titulli
/
public_html
/
19titulli
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Foundation
/
Http
/
Kernel.php
     */
    protected function dispatchToRouter()
    {
        return function ($request) {
            $this->app->instance('request', $request);
 
            return $this->router->dispatch($request);
        };
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Http\Response  $response
     * @return void
     */
    public function terminate($request, $response)
    {
        $this->terminateMiddleware($request, $response);
 
        $this->app->terminate();
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Http\Response  $response
     * @return void
     */
    protected function terminateMiddleware($request, $response)
    {
        $middlewares = $this->app->shouldSkipMiddleware() ? [] : array_merge(
            $this->gatherRouteMiddleware($request),
            $this->middleware
        );
 
        foreach ($middlewares as $middleware) {
            if (! is_string($middleware)) {
Arguments
  1. Request {
      #json: null
      #convertedFiles: null
      #userResolver: Closure {
        class: "Illuminate\Auth\AuthServiceProvider"
        this: AuthServiceProvider { …}
        parameters: {
          $guard: {
            default: null
          }
        }
        use: {
          $app: Application { …}
        }
      }
      #routeResolver: Closure {
        class: "Illuminate\Routing\Router"
        this: Router { …}
        use: {
          $route: Route { …}
        }
      }
      +attributes: ParameterBag {}
      +request: ParameterBag {#1}
      +query: ParameterBag {#1}
      +server: ServerBag {}
      +files: FileBag {}
      +cookies: ParameterBag {}
      +headers: HeaderBag {}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian"
      #requestUri: "/19titulli/public/index.php/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian"
      #baseUrl: "/19titulli/public/index.php"
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: "/19titulli/public"
      format: "html"
    }
    
  2. Response {}
    
/
home
/
titulli
/
public_html
/
19titulli
/
public
/
index.php
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/
 
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
 
$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);
 
$response->send();
 
$kernel->terminate($request, $response);
 
Arguments
  1. Request {
      #json: null
      #convertedFiles: null
      #userResolver: Closure {
        class: "Illuminate\Auth\AuthServiceProvider"
        this: AuthServiceProvider { …}
        parameters: {
          $guard: {
            default: null
          }
        }
        use: {
          $app: Application { …}
        }
      }
      #routeResolver: Closure {
        class: "Illuminate\Routing\Router"
        this: Router { …}
        use: {
          $route: Route { …}
        }
      }
      +attributes: ParameterBag {}
      +request: ParameterBag {#1}
      +query: ParameterBag {#1}
      +server: ServerBag {}
      +files: FileBag {}
      +cookies: ParameterBag {}
      +headers: HeaderBag {}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian"
      #requestUri: "/19titulli/public/index.php/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian"
      #baseUrl: "/19titulli/public/index.php"
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: "/19titulli/public"
      format: "html"
    }
    
  2. Response {}
    

Environment & details:

empty
empty
empty
empty
empty
Key Value
CONTEXT_DOCUMENT_ROOT
"/home/titulli/public_html"
CONTEXT_PREFIX
""
DOCUMENT_ROOT
"/home/titulli/public_html"
GATEWAY_INTERFACE
"CGI/1.1"
HTTP_ACCEPT
"*/*"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_CACHE_CONTROL
"max-age=259200"
HTTP_CONNECTION
"keep-alive"
HTTP_HOST
"www.titulli.com"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_VIA
"1.1 squid-proxy-5b5d847c96-9cmwv (squid/6.10)"
HTTP_X_FORWARDED_FOR
"10.1.116.69"
PATH
"/bin:/usr/bin:/usr/local/php/bin"
PATH_INFO
"/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian"
PATH_TRANSLATED
"/home/titulli/public_html/19titulli/public/index.php"
PHPRC
"/home/titulli"
QUERY_STRING
""
REDIRECT_STATUS
"200"
REMOTE_ADDR
"216.73.216.139"
REMOTE_PORT
"64801"
REQUEST_METHOD
"GET"
REQUEST_SCHEME
"http"
REQUEST_URI
"/19titulli/public/index.php/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian"
SCRIPT_FILENAME
"/home/titulli/public_html/19titulli/public/index.php"
SCRIPT_NAME
"/19titulli/public/index.php"
SERVER_ADDR
"23.254.224.246"
SERVER_ADMIN
"webmaster@titulli.com"
SERVER_NAME
"www.titulli.com"
SERVER_PORT
"80"
SERVER_PROTOCOL
"HTTP/1.1"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache/2.4.65 (Unix) OpenSSL/1.1.1k"
UNIQUE_ID
"aXOE53wCZfaGdzQOh8WtrwAAABY"
PHP_SELF
"/19titulli/public/index.php/threads-tashme-i-aksesueshem-edhe-ne-vendet-e-bashkimit-europian"
REQUEST_TIME_FLOAT
1769178343.8271
REQUEST_TIME
1769178343
APP_NAME
"Laravel"
APP_ENV
"local"
APP_KEY
"base64:dOuG4A412DsHf7D9Xw/fp0G4MurEGH+vL9lP6pbwSqI="
APP_DEBUG
"true"
APP_LOG_LEVEL
"debug"
APP_URL
"http://localhost"
DB_CONNECTION
"mysql"
DB_HOST
"127.0.0.1"
DB_PORT
"3306"
DB_DATABASE
"titulli_baza2018"
DB_USERNAME
"titulli_skenda"
DB_PASSWORD
"+ESXMn0uwo-S"
BROADCAST_DRIVER
"log"
CACHE_DRIVER
"file"
SESSION_DRIVER
"file"
SESSION_LIFETIME
"120"
QUEUE_DRIVER
"sync"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"null"
REDIS_PORT
"6379"
MAIL_DRIVER
"smtp"
MAIL_HOST
"smtp.mailtrap.io"
MAIL_PORT
"2525"
MAIL_USERNAME
"null"
MAIL_PASSWORD
"null"
MAIL_ENCRYPTION
"null"
PUSHER_APP_ID
""
PUSHER_APP_KEY
""
PUSHER_APP_SECRET
""
PUSHER_APP_CLUSTER
"mt1"
Key Value
APP_NAME
"Laravel"
APP_ENV
"local"
APP_KEY
"base64:dOuG4A412DsHf7D9Xw/fp0G4MurEGH+vL9lP6pbwSqI="
APP_DEBUG
"true"
APP_LOG_LEVEL
"debug"
APP_URL
"http://localhost"
DB_CONNECTION
"mysql"
DB_HOST
"127.0.0.1"
DB_PORT
"3306"
DB_DATABASE
"titulli_baza2018"
DB_USERNAME
"titulli_skenda"
DB_PASSWORD
"+ESXMn0uwo-S"
BROADCAST_DRIVER
"log"
CACHE_DRIVER
"file"
SESSION_DRIVER
"file"
SESSION_LIFETIME
"120"
QUEUE_DRIVER
"sync"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"null"
REDIS_PORT
"6379"
MAIL_DRIVER
"smtp"
MAIL_HOST
"smtp.mailtrap.io"
MAIL_PORT
"2525"
MAIL_USERNAME
"null"
MAIL_PASSWORD
"null"
MAIL_ENCRYPTION
"null"
PUSHER_APP_ID
""
PUSHER_APP_KEY
""
PUSHER_APP_SECRET
""
PUSHER_APP_CLUSTER
"mt1"
0. Whoops\Handler\PrettyPageHandler