Does “seeing” a location using the Scrying spell allow you to subsequently target another location for the Scrying spell?

The scrying spell allows you to place an invisible sensor anywhere you’ve seen before. You can see and hear through the sensor as if you were there

Imagine this scenario: I’ve seen the top of a mountain from far before, so I decide to use scrying to create a sensor there. From the top of the mountain using the sensor, I can see the top of another mountain and I later use scrying to see from the top of that mountain, and so forth.

As written it seems that “seeing” a location using the scrying spell allows you to subsequently see from that location using the scrying spell. Is this correct?

Seeing my public IP when doing ipconfig command

A bit convoluted question, but i’ll do my best to explain the situation. I have an ISP issued router/modem. But whenever I check for my IP address on my PC, i get my public address. Furthermore, with any network scanning software, I can basically see all the other hosts under /21 (my mask) subnet(about 2000). They are are other customers of the ISP, and, i can even see the services they are running(like web servers etc.). Basically, my PC has public IP only. Whenever I host a web server or any other server like Telnet or SSH, it is freely available for access on the web. The question is, is this normal? And the second question is, how can i mitigate this? Can I put on a router between their modem and my pc, and how would i configure routers outward facing address, as it is changing all the time( ISP uses dhcp to assigns addresses to their hosts)

photorec photo recovery software not seeing my mounted filesystem – trying to use photorec to recover lost jpegs

What is my situation?

I am working in a Dev Ops capacity for a service that manages jpeg files online. We had an unfortunate deploy and our media files (jpegs) are completely gone. I anticipate that our loss is probably simple and may be recoverable. I think somehow that the directory that contains the sub-directories that have our jpeg files was unlinked. If this is the case, we should be able to recover them.

What I have done so far and where we are hosted — details

I realized the loss almost right away and fortunately we did not have any users online at that moment. I stopped our service and brought down our server. I did that to prevent any more writes to the filesystem figuring that avoiding writes was essential to file recovery.

We are running Ubuntu 16.04 in DigitalOcean. I have brought the server back up using DigitalOcean’s recovery mode. This permits one to mount the filesystem of the given virtual host without running the virtual host and without running the services one has on the virtual host. This should be sufficient and correct for performing any form of recovery.

I need some where to write data for recovery. To that end, I have another server in DigitalOcean in the same data center (SFO1 unfortunately). I have mounted that host’s filesystem using sshfs. I should be able to write any recovery data from my virtual host’s filesystem (which is in recovery mode) to this other host via sshfs.

I selected the following utility to execute my recovery: PhotoRec

That utility is actually two utilities — PhotoRec and TestDisk.

The filesystem of the host we wish to recover is ext4. PhotoRec supports ext4. TestDisk may not support ext4. That’s okay, according to the documentation if the data is still there and largely uncorrupted, then we should be able to recover it with PhotoRec.

Here is the output of when I run df -Th — as you can see the filesystem I wish to recover is /dev/vda1 it is of type ext4 and mounted via /mnt . I installed photorec in /lib/live/mount/overlay which is the tmpfs . I have mounted another host via sshfs within the same datacenter to put any recovered data on:

root@xxxx-xxxxxx-xxxxxxxxx:~# df -Th Filesystem             Type        Size  Used Avail Use% Mounted on udev                   devtmpfs    7.9G     0  7.9G   0% /dev tmpfs                  tmpfs       1.6G  6.2M  1.6G   1% /run /dev/sr0               iso9660     251M  251M     0 100% /lib/live/mount/medium /dev/loop0             squashfs    220M  220M     0 100% /lib/live/mount/rootfs/rescue_rootfs.squashfs tmpfs                  tmpfs       7.9G   14M  7.9G   1% /lib/live/mount/overlay overlay                overlay     7.9G   78M  7.8G   1% / tmpfs                  tmpfs       7.9G     0  7.9G   0% /dev/shm tmpfs                  tmpfs       5.0M     0  5.0M   0% /run/lock tmpfs                  tmpfs       7.9G     0  7.9G   0% /sys/fs/cgroup tmpfs                  tmpfs       1.6G     0  1.6G   0% /run/user/0 fuse.sshfs  311G   13G  298G   5% /mnt2/xxxxxx-xxxxxx-xxxxxx /dev/vda1              ext4        311G   41G  270G  14% /mnt  

When I run photorec it only sees:

>Disk /dev/sr0 - 252 MB / 250 MiB (RO) - QEMU DVD-ROM 

It does not see my filesystem that I want to execute recovery on at all. That is:

/dev/vda1              ext4        311G   41G  270G  14% /mnt 

I have tried this with my filesystem mounted because that seems right to me. However, we did find in some online documentation that some file recovery tools require file systems to not be mounted (which seems weird to me – how is that supposed to work). So I tried executing it unmounted but same thing: it only sees:

>Disk /dev/sr0 - 252 MB / 250 MiB (RO) - QEMU DVD-ROM 

Does anyone have any suggestions regarding getting photorec to see my filesystem:

/dev/vda1              ext4        311G   41G  270G  14% /mnt 

I do have some backups, but unfortunately, I have about seven days worth of unbacked up photos. We could in theory live without them and reach out to our clients and get data from them and reprocess and repost it. But it would be ideal, if I could with just a few clicks of some buttons, get back this data that is likely still un the filesystem just unreachable.

Help using photorec for this purpose wouold be ideal as would any other suggestions regarding how to recover my lost/missing files.


I’m not seeing the right side of my layouts [on hold]

I’m trying to code an app for a school project. I’m stuck with the design. I can’t see the right side of my activity on my phone, but it’s appearing on the Android Studio preview.

And here are the 2 screenshots: Android Studio Preview Phone screenshot Here’s the code:


<     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:theme="@style/AppTheme.AppBarOverlay">  </>  <include     android:id="@+id/include"     layout="@layout/content_main" />  <     android:id="@+id/overlay"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:backgroundTint="#131313"/>      <         android:id="@+id/speedDial"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_gravity="bottom|end"         app:sdMainFabClosedSrc="@drawable/ic_menu"         app:sdOverlayLayout="@id/overlay"/> 

 content_main.xml  <ScrollView xmlns:android=""     xmlns:app=""     xmlns:tools=""     android:layout_width="match_parent"     android:layout_height="match_parent"     app:layout_behavior="@string/appbar_scrolling_view_behavior"     tools:context=".MainActivity"     tools:showIn="@layout/activity_main">       <LinearLayout         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:gravity="center"         android:orientation="vertical"         android:paddingBottom="5dp">          <RelativeLayout             android:layout_width="match_parent"             android:layout_height="340dp"             android:layout_centerInParent="true"             android:layout_marginLeft="10dp"             android:layout_marginRight="10dp">             <ImageView                 android:layout_width="match_parent"                 android:layout_height="match_parent"                 android:src="@drawable/header2"                 android:scaleType="fitCenter"                 android:layout_marginTop="-20dp"/>          </RelativeLayout>         <RelativeLayout             android:clickable="true"             android:focusable="true"             android:id="@+id/plante1"             android:layout_width="match_parent"             android:layout_height="match_parent"             android:layout_centerVertical="true"             android:background="@drawable/ripple"             android:layout_marginLeft="10dp"             android:layout_marginRight="10dp"             android:layout_marginTop="-10dp"             android:layout_marginBottom="15dp"             android:gravity="center">              <RelativeLayout                 android:layout_width="60dp"                 android:layout_height="60dp"                 android:layout_marginLeft="10dp"                 android:background="@drawable/logo_shape">                  <ImageView                     android:layout_width="match_parent"                     android:layout_height="match_parent"                     android:layout_centerVertical="true"                     android:layout_centerHorizontal="true"/>             </RelativeLayout>              <RelativeLayout                 android:layout_width="match_parent"                 android:layout_height="match_parent"                 android:layout_centerHorizontal="true"                 android:orientation="vertical">                  <fr.visufo.titouan.jardin.UnderlinedTextView                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:layout_marginLeft="80dp"                     android:layout_marginTop="0dp"                     android:gravity="left"                     android:text="Plante 1"                     android:textSize="20dp"                     android:fontFamily="@font/raleway_light"                     android:textColor="#000000"                     app:underlineColor="#6DB85C"                     app:underlineWidth="10px"/>             </RelativeLayout>              <RelativeLayout                 android:layout_width="match_parent"                 android:layout_height="match_parent"                 android:orientation="vertical">                 <TextView                     android:layout_width="match_parent"                     android:layout_height="match_parent"                     android:layout_marginLeft="80dp"                     android:layout_marginTop="30dp"                     android:textSize="15dp"                     android:textColor="#000000"                     android:text="Pensez à rentrer votre plante demain"                     android:fontFamily="@font/raleway_light"/>             </RelativeLayout>             <RelativeLayout                 android:layout_width="match_parent"                 android:layout_height="match_parent"                 android:layout_marginLeft="335dp"                 android:layout_marginRight="7dp"                 android:layout_marginTop="-4dp"                 android:background="@drawable/degrees_shape">                  <TextView                     android:layout_width="match_parent"                     android:layout_height="match_parent"                     android:text="0°C"                     android:gravity="center"                     android:fontFamily="@font/roboto"                     android:textSize="18dp"                     android:textColor="#636363"/>             </RelativeLayout>         </RelativeLayout>          There are 8 similar relative layouts showing quite the same thing, here's          only one       </LinearLayout>   </ScrollView> 

Do I have darkvision while seeing through my familiar’s eyes?

Suppose my familiar doesn’t have darkvision, I have darkvision, and I use my action go see through my familiar’s eyes.

Can I see into the darkness even though my familiar can’t?

If so, does ot matter whether my darkvision is a racial trait or a magical effect such as from the darkvision spell or the Devil’s Sight invocation?

Why has Adobe DNG converter stopped seeing my raw files?

I’ve been using Adobe DNG converter to convert my Olympus .ORF files and Canon .CR2 files.

It was working fine but has been a few weeks since I used it. Today I tried to use it and it’s just not seeing that there are any files in the RAW Conversion folder I use, even though I followed exactly the same procedure as on previous successful conversions.

I’ve just updated to the latest version available on Adobe – – and it’s still not seeing them.

Does anyone have any suggestions, please?

Thank you in advance ☺️.

PyPi Keyboard – Seeing “Shortcut” characters printed on break from their loop?

import keyboard import os import sys from colorama import Fore, Back, Style, init init() clear = lambda: os.system('cls') cwd = os.getcwd() header = """    ____      _          ____      _       _       _                ___   _   / ___|___ (_)_ __    / ___|__ _| |_   _| | __ _| |_ ___  _ __   / _ \ / |  | |   / _ \| | '_ \  | |   / _` | | | | | |/ _` | __/ _ \| '__| | | | || |  | |__| (_) | | | | | | |__| (_| | | |_| | | (_| | || (_) | |    | |_| || |   \____\___/|_|_| |_|  \____\__,_|_|\__,_|_|\__,_|\__\___/|_|     \___(_)_|                                                    Omar "Michael Abdo" 2019                                                                 'Q' to Quit """   def end():     print(Style.BRIGHT + Fore.RED + "\n\n\t\tCLOSING.")     os._exit(0)  def commit(cs, vs, opened="CoinCount"):     inp = ""     total = "\n\nTOTAL $  {0:.2f}".format(sum(map(lambda x, y: x*y, cs, vs)))     while inp.upper() != "N" and inp.upper() != "Y":         inp = input("{} Save? [Y/N]: ".format(total))     if inp.upper() == "Y":         temp = input("Enter filename or press enter to use default ({}).txt:  ".format(opened))         if temp: opened = temp         if not opened.endswith(".txt"): opened += ".txt"         conf = ""         while conf.upper() not in ['Y', 'N']:             conf = input("Saving file as {}\{} - Confirm? [Y/N]: ".format(cwd, opened))         if conf.upper() == "Y":             with open(opened, "w+") as f:                 f.write(",".join(map(lambda x: str(x), cs)))                 f.write(total)             clear()             print("Total saved to {}\{}!\n\n\n\n".format(cwd, opened))     end()  def changeVal(dir, cursor_pos, cs, vs):     ch = (len(cs) - 1) - cursor_pos[0]     if dir == "D":         if cs[ch] >= 1:             cs[ch] -= 1             moveCursor('n', cursor_pos, cs, vs)     elif dir == "U":             cs[ch] += 1             moveCursor('n', cursor_pos, cs, vs)  def moveCursor(dir, cursor_pos, cs, vs):     total = "TOTAL $  {0:.2f}".format(sum(map(lambda x, y: x*y, cs, vs)))     neutral = """            0.05    0.10    0.25    1.00    2.00    5.00    10.00   20.00   50.00   100.00           {}       {}       {}       {}       {}       {}        {}       {}       {}        {}                  """.format(cs[9], cs[8], cs[7], cs[6], cs[5], cs[4], cs[3], cs[2], cs[1], cs[0])     if dir != 'n':         if cursor_pos[0] != 0 and dir == 'L':             cursor_pos[0] -= 1         elif cursor_pos[0] != 9 and dir == 'R':             cursor_pos[0] += 1         elif cursor_pos[0] == 0 and dir == 'L':             cursor_pos[0] = 9         elif cursor_pos[0] == 9 and dir == 'R':             cursor_pos[0] = 0     clear()     print(total)     if cursor_pos[0] == 0:         print(neutral[:12] + Style.BRIGHT + Fore.GREEN + neutral[12:16] + Style.RESET_ALL + neutral[16:]) #Nickel     elif cursor_pos[0] == 1:         print(neutral[:20] + Style.BRIGHT + Fore.GREEN + neutral[20:24] + Style.RESET_ALL  + neutral[24:]) #Dime     elif cursor_pos[0] == 2:         print(neutral[:28] + Style.BRIGHT + Fore.GREEN + neutral[28:32] + Style.RESET_ALL  + neutral[32:]) #Quarter     elif cursor_pos[0] == 3:         print(neutral[:36] + Style.BRIGHT + Fore.GREEN + neutral[36:40] + Style.RESET_ALL  + neutral[40:]) #loon     elif cursor_pos[0] == 4:         print(neutral[:44] + Style.BRIGHT + Fore.GREEN + neutral[44:48] + Style.RESET_ALL  + neutral[48:]) #toon     elif cursor_pos[0] == 5:         print(neutral[:52] + Style.BRIGHT + Fore.GREEN + neutral[52:56] + Style.RESET_ALL  + neutral[56:]) #fiver     elif cursor_pos[0] == 6:         print(neutral[:60] + Style.BRIGHT + Fore.GREEN + neutral[60:65] + Style.RESET_ALL  + neutral[65:]) #tens     elif cursor_pos[0] == 7:         print(neutral[:68] + Style.BRIGHT + Fore.GREEN + neutral[68:73] + Style.RESET_ALL  + neutral[73:]) #twenties     elif cursor_pos[0] == 8:         print(neutral[:76] + Style.BRIGHT + Fore.GREEN + neutral[76:81] + Style.RESET_ALL  + neutral[81:]) #fifties     elif cursor_pos[0] == 9:         print(neutral[:84] + Style.BRIGHT + Fore.GREEN + neutral[84:91] + Style.RESET_ALL  + neutral[91:]) #hundreds     print("CONTROLS:\n-> / <-\t:\tMOVE\nZ\t:\tINCREMENT\nX\t:\tDECREMENT\nENTER\t:\tSAVE\nQ\t:\tQUIT") def main():     print(Fore.GREEN + Style.BRIGHT + header)     keyboard.add_hotkey('q', end)     mode = ""     cursor_pos = [0]     cs = [0,0,0,0,0,0,0,0,0,0] #100, 50, 20, 10, 5, 2, 1, 0.25, 0.10, 0.05     vs = [100, 50, 20, 10, 5, 2, 1, 0.25, 0.10, 0.05]     while mode != "C" and mode != "S":         mode = input("Enter mode for entry: C for Counting, S for Static: ")         if mode.upper() == "S":             hund = ""             while not hund.isdigit():                 hund = input("Enter # of $  100:\t")              fift = ""             while not fift.isdigit():                 fift = input("Enter # of $  50:\t\t")              twen = ""             while not twen.isdigit():                 twen = input("Enter # of $  20:\t\t")              tens = ""             while not tens.isdigit():                 tens = input("Enter # of $  10:\t\t")              five = ""             while not five.isdigit():                 five = input("Enter # of $  5:\t\t")              toon = ""             while not toon.isdigit():                 toon = input("Enter # of $  2:\t\t")              loon = ""             while not loon.isdigit():                 loon = input("Enter # of $  1:\t\t")              quar = ""             while not quar.isdigit():                 quar = input("Enter # of $  0.25:\t")              dime = ""             while not dime.isdigit():                 dime = input("Enter # of $  .10:\t")              nick = ""             while not nick.isdigit():                 nick = input("Enter # of $  0.05:\t")              save = ""             while save.upper() != "Y" and save.upper() != "N":                 save = input("Total is $  {}. Save amount?\n\n\t\t[Y/N]:\t".format(int(nick)*0.05 + int(dime)*0.10 + int(quar)*0.25 + int(loon)*1 + int(toon)*2 + int(five)*5 + int(tens)*10 + int(twen)*20 + int(fift)*50 + int(hund)*100))             if save.upper() == "Y":                 conf = ""                 while conf.upper() not in ['Y', 'N']:                     if os.path.exists("CoinCount.txt"):                         inp = input("File exists. Enter a new name or press enter to overwrite default file CoinCount.txt: ")                     else:                         inp = input("Enter filename or press enter to use default (CoinCount.txt):  ")                     if not inp: inp = "CoinCount"                     if not inp.endswith(".txt"): inp += ".txt"                     conf = input("Saving file as {}\{}- Confirm? [Y/N]: ".format(cwd, inp))                     if conf.upper() == "N":                         conf = ""                         continue                     if conf.upper() == "Y":                         with open(inp, "w+") as f:                             f.write(",".join(list(map(lambda x: str(x),[hund, fift, twen, tens, five, toon, loon, quar, dime, nick]))))                             f.write("\n{}".format(int(nick)*0.05 + int(dime)*0.10 + int(quar)*0.25 + int(loon)*1 + int(toon)*2 + int(five)*5 + int(tens)*10 + int(twen)*20 + int(fift)*50 + int(hund)*100))                     clear()                 print("Total saved to {}\{}!\n\n\n\n".format(cwd, inp))             end()         elif mode.upper() == "C":             mode = ""             inp = ""             while mode.upper() != "N" and mode.upper() != "O":                 mode = input("Count from New or Open previous total? [N/O]: ")             if mode.upper() == "O":                 if os.path.exists("CoinCount.txt"):                     inp = input("File(s) exist. Enter a new name or press enter to use the default CoinCount.txt: ")                 else:                     inp = input("Enter filename:  ")                 if not inp: inp = "CoinCount"                 if not inp.endswith(".txt"): inp += ".txt"                 conf = ""                 while conf.upper() not in ['Y', 'N']:                     conf = input("Open from {}\{} - Confirm? [Y/N]: ".format(cwd, inp))                 if conf.upper() == "Y":                     try:                         with open(inp) as f:                             cs = list(map(lambda x: int(x), f.readline()[:-1].split(",")))                             print("Successfully loaded data from {}\{}".format(cwd, inp))                     except:                         print("BAD!")             moveCursor('n', cursor_pos, cs, vs)             keyboard.add_hotkey('left', moveCursor, args=('L', cursor_pos, cs, vs))             keyboard.add_hotkey('right', moveCursor, args=('R', cursor_pos, cs, vs))             keyboard.add_hotkey('z', changeVal, args=('U', cursor_pos, cs, vs))             keyboard.add_hotkey('x', changeVal, args=('D', cursor_pos, cs, vs))             keyboard.add_hotkey('enter', commit, args=(cs, vs, inp))             while True:                 pass main() 

Context: This is a coin calculating Python script that uses PyPi Keyboard to allow a user to use the “Z” and “X” keys to increment a selected coin (Choosen by moving the highlighted coin with arrows) while in “C[ount]” mode. It works! The problem is that when I increment some coins and go to save the result by running “commit” thereby breaking the While True loop… Shortcut Keys Returned

It prints the keys I was pressing to Increment. Could anyone tell me why? I’ve narrowed it down to this section in commit:

def commit(cs, vs, opened="CoinCount"):     inp = ""     total = "\n\nTOTAL $  {0:.2f}".format(sum(map(lambda x, y: x*y, cs, vs)))     while inp.upper() != "N" and inp.upper() != "Y":         inp = input("{} Save? [Y/N]: ".format(total)) 

This because when I add a ‘debugging string’ like “WWEEEEOOO WWEEEOOO” to that loop I get: Alarm Sounding Which I take to mean that it has entered my Whileloop three(?) times in total instead of once. Please let me know if you have insight.