LiFSBrowse A Visual, User Environment for the Linking File System

合集下载

为VisualStudio添加默认INCLUDE包含路径一劳永逸的方法(更新)

为VisualStudio添加默认INCLUDE包含路径一劳永逸的方法(更新)

为VisualStudio添加默认INCLUDE包含路径⼀劳永逸的⽅法(更新)你是否曾经也有过这样的问题:⽤VS的时候,有时会⽤到⼀些⾮⾃带的库,例如WTL、Boost、DX等,每次需要⽤到时都要在项⽬属性⾥添加相应的include⽬录,久⽽久之觉得有点⿇烦。

是否有解决办法呢?于是我便在⽹上找相关资料,在StackOverflow⽹站上找到⼀篇相关的⽂章(),⽂章⾥提到的⼀个办法是修改C:\Users\<user>\AppData\Local\Microsoft\MSBuild\v4.0\er.props这个⽂件,在这个⽂件⾥添加需要include的⽬录,之前我⼀直是⽤这个⽅法,也没啥问题。

当我安装了VS2012之后,问题变出现了。

在VS2012上新建⼀个MFC的⼯程,什么也没动,居然编译不通过,提⽰找不到某些⽂件,我便联想到了是不是之前修改了影响到了,于是我果断把修改的那个⽂件恢复成默认的内容,再试,结果就没问题了。

可是这样就得每次都⼿动添加WTL的⽬录了。

我便开始翻VS的⼀些配置⽂件。

解决⽅案⼀:修改 "VS安装⽬录中的\VC\VCWizards\default.vcxproj" 这个⽂件,(这其实就是个xml⽂件)如我的⽬录是"D:\Program Files\Microsoft Visual Studio 11.0\VC\VCWizards\default.vcxproj"如果我要添加的⽬录是"D:\Program Files\Microsoft Visual Studio 11.0\VC\WTL\include";⽤⽂本编辑器打开这个⽂件,定位到⽂件末尾,在</Project>之前插⼊如下内容<PropertyGroup><IncludePath>$(VCInstallDir)\WTL\include;$(IncludePath)</IncludePath></PropertyGroup>$(VCInstallDir)\WTL\include;就是需要添加的⽬录了。

VisualStudiocode配置Python开发环境

VisualStudiocode配置Python开发环境

VisualStudiocode配置Python开发环境步骤1:安装 Python这个直接略过,建议3以上版本。

步骤2:安装 Visual Studio Code选择对应的版本,下载安装即可,过程简单,关键是免费软件⽆需破解。

步骤3:改变显⽰语⾔看英⽂有点吃⼒,那就看中⽂吧,在扩展⾥搜索中⽂包进⾏安装安装完成后弹出重启提⽰:重启后就看到中⽂了!步骤4:安装扩展安装。

Python扩展名为Python,由Microsoft发布。

步骤5:在项⽬(⼯作区)⽂件夹中启动VS Code在命令提⽰符或终端上,创建⼀个名为“hello”的空⽂件夹,cd 到code该⽂件夹.,然后输⼊以下命令打开该⽂件夹()中的VS Code():mkdir hellocd hellocode .通过在⽂件夹中启动VS Code,该⽂件夹将成为您的“⼯作区”。

VS Code存储特定于该⼯作空间的.vscode/settings.json设置,这些设置与全局存储的⽤户设置分开。

或者也可以先打开VSCode,然后使⽤“ ⽂件”>“打开⽂件夹”打开项⽬⽂件夹。

貌似第⼆种⽅法⽐较实⽤,第⼀种⽅法中涉及到⼯作区的概念还需要进⼀步理解。

步骤6:选择⼀个Python解释器Python是⼀种解释型语⾔,为了运⾏Python代码并获得Python IntelliSense,您必须告诉VS Code使⽤哪种解释器。

打开命令选项板(Ctrl + Shift + P)选择Python 3解释器,开始键⼊Python:select inter命令进⾏搜索,然后选择命令。

该命令显⽰当前主机可⽤的python解释器列表,包括虚拟环境,这个要特别注意,后⾯⽤到虚拟环境的时候(django⽤虚拟环境安装)注意别弄错了解释器,不然东西都跑到全局解释器环境中就尴尬了。

{Python开发⼈员的最佳实践是避免将包安装到全局解释器环境中。

您改为使⽤virtual environment包含全局解释器副本的特定于项⽬。

UsingtheFieryWeb...

UsingtheFieryWeb...

18Using the Fiery WebToolsThe Fiery utilities enable remote users to view server functions. Usersmay also have the ability to manage jobs remotely if the systemadministrator has assigned them such privileges.This chapter provides an introduction to the Fiery WebTools, providinga description of the tools and the procedure for accessing them.Fiery WebTools OverviewFiery WebTools reside on the Phaser 790 and can be accessed fromWindows 95/98, Windows 2000, Windows NT 4.0, and Mac OS clientworkstations with Internet browsers that support the Java language.The Fiery software has a home page that lets you view serverfunctions and manipulate jobs remotely.Some of the functions, such as WebSpooler, may require a password ifthe administrator has set Administrator and Operator passwords insetup.The Status, WebLink, and WebDownloader WebTools do not requireany special access privileges. As long as the administrator hasenabled Web Services in Setup and has provided users with the IPaddress of the printer, anyone can use these WebTools.18. Using the Fiery WebToolsThe following table summarizes the Fiery WebTools accessed from theFiery home page and refers you to the appropriate documentation forsupport.WebTool SummaryStatus Displays the jobs currently processing and printingWebSpooler*Enables viewing, reordering, manipulating, reprinting, anddeleting jobs currently spooling, processing, or printing.Enables user to view, print, and delete the Job Log.WebLink Provides a link to another web page, provided you have a validInternet connection. The initial WebLink destination is. The destination can be changed by theAdministrator.Installer Enables downloading of the printer file installers directly fromthe server.WebDownloader Enables downloading of PostScript, PCL, EPS, and PDF filesto the printerWebSetup*Enables the Administrator to modify the Fiery configuration(Setup) remotely.Font Manager Enables downloading of fonts to the printer*Specific procedures for the Fiery Link, WebSpooler, and WebSetuputilities are covered in separate chapters. Refer to the chapters UsingFiery Link, Using Fiery WebSpooler, and Performing the setup fromWebSetup for more information.The following sections of this chapter contain more information andprocedures about the other WebTools.18. Using the Fiery WebToolsAccessing the Fiery WebToolsOpen the Internet browser application.1. Enter the IP address or the DNS name of the Phaser 790 in theURL line of the browser.2. If a Log In dialog box is displayed, select Guest and OK.The Log In dialog box is displayed only if the administrator hasset a password. Guest access is sufficient to use the Status,WebLink, and WebDownloader WebTools, as described in thissection.The Fiery WebTools home page is displayed, with the individualFiery WebTools listed on the left.3. To launch one of the Fiery WebTools, select the name of the toolyou want to access.Move the cursor over the buttons to display information about theselections.18. Using the Fiery WebToolsUsing the Status WebToolThe Status WebTool displays the jobs that are currently processingand printing.1. Select the Status button.The current RIP status and Printer Status are displayed.2. To open a new browser window for the Status display, selectFloat. You can then close other browser windows and leave theStatus window open to continue checking which jobs are currentlyRIPping and printing. As long as you keep the Status windowopen, it is dynamically updated.To obtain more information about the status of jobs, use FieryWebSpooler or the Command WorkStation. You can also useFiery Link as described in the chapter Using Fiery Link.Using WebLinkWebLink connects you to a help page or multiple web pages, providedyou have a valid Internet connection. The administrator at your site canset the WebLink destination.Select the WebLink button and view the information available there.18. Using the Fiery WebToolsUsing the Installer WebToolThe Installer WebTool enables you to download printer drivers directlyfrom the printer to your workstation.Do not use this tool with Windows 2000 printer drivers.1. Launch your Internet or intranet browser and enter the DNSname or IP address of the printer.2. Select a login level. Enter a password if necessary. Select OK.The Log In dialog box is displayed only if the administrator hasset a password. No password is required to log in as a Guest.Guests have full access to the Installer WebTool.3. Select the Installer button.18. Using the Fiery WebTools4. Under the name of your operating system, select Printer Files.For Windows workstations, a dialog box is displayed, promptingyou to save the file to the location you select.For Mac OS workstations, a folder named Printer Driver isdownloaded to the desktop in a BinHex-encoded, compressedformat. If your internet browser is equipped with an expanderutility such as StuffIt Expander, the folder is decoded anddecompressed automatically.5. Perform one of the following:•For Windows workstations, browse to the location whereyou want to save the Prntdrve.exe file and select Save.•For Mac OS workstations, if the Printer Driver folder was notautomatically decoded and decompressed, launch a utilitythat performs that function.6. For Windows workstations, double-click the Prntdrve.exe file orbrowse to the location where you want to install the folder andselect Next.7. Install the appropriate printer driver for your operating system.Refer to the chapter Installing the user software for your operatingsystem.18. Using the Fiery WebToolsUsing WebDownloaderWebDownloader enables you to send PostScript, EncapsulatedPostScript (EPS), PCL, and Portable Document Format (PDF) files tothe printer without first opening the file in an application.1. Select the WebDownloader button.2. Select the queue in the Print Connection drop-down menu.3. You can download files to the direct, print, or hold queue. Filessent to the print queue are spooled in the printer memory. Filessent to the hold queue remain in memory until they are moved tothe print queue or are deleted.4. If you are sending a PDF job, select the PDF check box. If thischeckbox is not selected, the download may cause PS error.5. Enter the desired number of copies to print. If you want a specificpage range to print, enter the first page and last page of therange.6. Select the Browse button to search for the file to download.Select the file and Open.7. Select the Send File button.18. Using the Fiery WebToolsFont ManagerFont Manager enables you to download, retain, or restore special fontsthat are not included in the built-in printer fonts.1. Select the Font Manager button.2. To download a font, select the Browse button and search for thedesired font. Select the Download Font button.3. To retain the downloaded font, select the Validate Only checkbox. Select the Browse button and search for the desired FontBackup File. Select the Download Font Backup File button.4. To restore the backup font, select the Get Font Backup Filebutton.。

nameoflastusedpublishprofile -回复

nameoflastusedpublishprofile -回复

nameoflastusedpublishprofile -回复如何创建和使用Publish Profile 在Visual Studio 中发布应用程序。

在Visual Studio 中,Publish Profile 是一个用来定义和配置发布应用程序的文件。

它包含了所有必要的设置,使得发布应用程序变得简单和方便。

在这篇文章中,我们将一步一步地回答如何创建和使用Publish Profile。

第一步:打开Visual Studio 并创建一个新的解决方案。

首先,打开Visual Studio。

如果你还没有安装Visual Studio,你可以从官方网站上下载并安装它。

安装完成后,打开Visual Studio。

在Visual Studio 中,选择“文件”菜单,并选择“新建”→“项目”。

在“新建项目”对话框中,选择一个合适的项目模板,比如“ Core Web 应用程序”。

在项目名称文本框中输入一个适当的名称,并选择一个位置来保存新的解决方案。

点击“确定”按钮,Visual Studio 将创建一个新的解决方案,并打开项目。

第二步:配置项目的发布设置。

在Visual Studio 中,选择“生成”菜单,并选择“发布项目名称”。

在“选择目标”页面中,选择一个发布目标,比如“文件夹”、“Azure”、“IIS”等。

根据选择的目标,填写相关的设置,比如目标路径、URL、用户名和密码等。

点击“下一步”按钮,进入下一个页面。

第三步:配置发布选项。

在“发布方式”页面中,选择一个发布方式,比如“自动(仅发布)”或“手动(仅生成)”,并选择是否要生成和发布一个可部署包。

根据选择的发布方式,填写相关的设置,比如生成配置、目标框架、发布模式等。

点击“创建”按钮,Visual Studio 将创建一个Publish Profile 文件,并将其保存在项目的根目录下。

第四步:使用Publish Profile 进行发布应用程序。

swiftui中.environment的用法

swiftui中.environment的用法

一、简介SwiftUI是一种用于构建iOS应用程序用户界面的现代UI工具包,它引入了一种新的编程模式,使得构建用户界面更加简单和直观。

在SwiftUI中,开发者可以使用.environment来访问环境值,这为我们提供了一种在整个应用程序中共享数据和状态的便捷方式。

二、.environment的作用1. 在SwiftUI中,.environment的作用是允许我们在视图层次结构中传递环境值。

环境值是一种全局的数据源,可以在整个应用程序中设置和共享。

通常情况下,环境值用于存储应用程序的全局信息,比如颜色主题、本地化信息、字体样式等。

2. 使用.environment修饰符,我们可以将环境值传递给当前视图及其子视图,在不同的视图层次结构中共享数据和状态。

这种方式可以避免通过props或全局变量在视图之间传递数据,使得代码更加简洁和可维护。

三、.environment的用法1. 设置全局颜色主题在SwiftUI中,我们可以使用.environment修饰符来设置全局的颜色主题。

我们可以通过.environment(\.colorScheme, .dark)来设置暗黑模式的颜色主题。

这样,整个应用程序中的组件都会自动适配该颜色主题,无需单独为每个组件设置颜色。

2. 设置本地化信息除了颜色主题之外,我们还可以使用.environment来设置本地化信息。

我们可以通过.environment(\.locale, Locale(identifier: "zh_CN"))来设置应用程序的本地化语言为中文。

这样,所有的文本和界面元素都会自动显示为中文,无需手动处理每个文本组件的本地化。

3. 传递用户数据在实际应用程序开发中,我们经常需要在不同的视图之间传递用户数据,比如用户登录状态、用户偏好设置等。

使用.environment修饰符,我们可以方便地在视图层次结构中传递用户数据。

我们可以通过.environmentObject将用户对象绑定到环境值中,然后在需要访问用户数据的视图中直接使用EnvironmentObject来获取用户对象。

Environmentmodules工具使用说明

Environmentmodules工具使用说明
ronmentmodules工具来快速设置和修改用户编译运行环境
Environmentmodules工 具 使 用 说 明
Environment modules工具使用说明 IBM 高性能计算机集群系统通过Environment modules工具来快速设置和修改用户编译运行环境。Environment modules通过 加载和卸载modulefile文件可直接改变用户的环境变量,用户不需修改.bashrc,从而避免误操作。 常用命令: 1.module av - - 显示系统可用的编译器及库
2. module load | add 加载环境变量 比如: module load netcdf/4.1.1 将netcdf-4.1.1加载到环境中 3. module unload | rm 卸载环境变量 比如: module unload netcdf/4.1.1 将netcdf-4.1.1从用户环境中卸载 4. module list 显示用户加载的编译器及库 5. module swap 替换环境变量 比如: module swap netcdf/4.1.1 netcdf/4.2.1 将环境变量中netcdf-4.1.1替换成netcdf-4.2.1 6.module help 帮助命令

VSCode环境配置指南

VSCode环境配置指南

VSCode环境配置指南现代软件开发很大程度上依赖于强大的开发工具来提高效率和质量。

其中,Visual Studio Code(简称VSCode)已经成为开发者们普遍使用的一款集成开发环境。

本文将带您逐步了解如何配置和优化VSCode环境,以提高代码编写和调试的效率。

首先,让我们从安装VSCode开始。

您可以从VSCode官方网站(https:///)下载适用于您操作系统的安装程序。

安装完成后,打开VSCode并进入扩展市场,点击左侧的四方格图标或使用快捷键Ctrl+Shift+X。

在扩展市场中,您可以搜索并安装对应语言或框架的扩展,例如Python、JavaScript、Java等。

扩展旨在提供针对特定语言或框架的功能支持和优化,如语法高亮、代码自动补全、代码格式化等。

在扩展市场中,您还可以搜索并安装其他一些强大的扩展,以便更好地管理代码库和调试代码。

如GitLens扩展可以方便地查看代码提交历史和贡献者信息,或者使用Live Share扩展与其他人进行实时协作编程。

此外,还有许多用于美化界面和提供额外功能的扩展可以根据个人喜好选择安装。

一旦安装了所需的扩展,接下来我们来配置VSCode的一些常用设置。

您可以通过点击左下角的设置按钮或使用快捷键Ctrl+,来访问VSCode的设置面板。

在设置面板中,您可以个性化定制各种功能和外观选项。

例如,您可以在"editor.tabSize"中设置制表符缩进的大小。

在"editor.fontSize"中更改字体的大小。

在"files.exclude"中指定您希望在文件资源管理器中排除的文件或文件夹。

除了个性化外观和功能,VSCode还提供了丰富的调试功能,以帮助您快速定位和修复代码中的错误。

为了配置调试环境,您需要创建一个调试配置文件。

在VSCode的调试菜单中,点击配置按钮(位于菜单的左上角)并选择“创建launch.json”。

Environment 类

Environment 类

Environment 类.NET Framework 4.5其他版本1(共 1)对本文的评价是有帮助 - 评价此主题提供有关当前环境和平台的信息以及操作它们的方法。

此类不能被继承。

继承层次结构System.ObjectSystem.Environment命名空间:System程序集: mscorlib(在 mscorlib.dll 中)语法C#C++F#VB 复制[ComVisibleAttribute(true )] public static class Environment Environment 类型公开以下成员。

属性名称说明CommandLine获取该进程的命令行。

CurrentDirectory获取或设置当前工作目录的完全限定路径。

CurrentManagedThreadId 获取当前托管线程的唯一标识符。

ExitCode获取或设置进程的退出代码。

HasShutdownStarted 获取一个值,该值指示当前的应用程序域是否正在卸载或者公共语言运行时 (CLR) 是否正在关闭。

Is64BitOperatingSystem 确定当前操作系统是否为 64 位操作系统。

Is64BitProcess 确定当前进程是否为 64 位进程。

MachineName获取此本地计算机的 NetBIOS 名称。

NewLine获取为此环境定义的换行字符串。

OSVersion获取包含当前平台标识符和版本号的 OperatingSystem 对象。

ProcessorCount获取当前计算机上的处理器数。

StackTrace获取当前的堆栈跟踪信息。

SystemDirectory 获取系统目录的完全限定路径。

SystemPageSize获取操作系统的内存页的字节数。

TickCount获取系统启动后经过的毫秒数。

UserDomainName 获取与当前用户关联的网络域名。

UserInteractive获取一个值,用以指示当前进程是否在用户交互模式中运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LiFSBrowse:A Visual,User Environment for the Linking File SystemSasha Amessasha@Master’s Project ReportDepartment of Computer ScienceUniversity of California,Santa CruzAbstractThe Linking File System introduces a new storage paradigm for enhanced user productivity through re-lationships betweenfiles,yet it opens up new chal-lenges in usability.LiFSBrowse is a GUI for LiFS that attempts to meet those challenges through giving customizable graphical views of thefile system.LiFS-Browse supports interaction through link manipula-tion andfile system querying.We describe the layout of LiFSBrowse in detail and give some examples of its usability through a samplefile system view.1.IntroductionThe Linking File System(LiFS)introduces a new paradigm infile system ing attributed links,users of thefile system have the potential for huge gains in productivity,such as through the abil-ity to provide context for their documents.Links allow users to express relationships between docu-ments,where they previously lacked the ability.How-ever,LiFS is only the infrastructure.LiFS itself does not have an interface,thus,determining the true us-ability of LiFS shall be left up to those who can pro-vide such an interface.In this paper,I present LiFSBrowse.LiFSBrowse is a graphical user interface to the Linking File Sys-tem.The main goal of LiFSBrowse is to provide users with a better experience in interacting with LiFS over command-line tools.LiFSBrowse should allow the user to browse herfiles and links,list the attributes on links andfiles,and display thefile when possible. To enhance browser usability,browse displays should be customizable to the user’s liking through a series of view options.Additional functionality should give the user the ability to interact with LiFS,such as through creating,modifying,or deleting links.Finally,the user should have the ability through LiFSBrowse to query LiFS for a specific set offiles and links.This paper should demonstrate that LiFSBrowse can meet these functional goals,thus enhancing the usability of the Linking File System.This paper is organized as follows.The next sec-tion gives an overview of LiFS,a description the text-based LiFS interface,and the advantages to using a GUI.Section3describes the GUI features and lay-out.Section4discusses the LiFSBrowse implemen-tation.Section5gives some examples of the usability of LiFSBrowse.Sections6and7discuss related and future work,and section8concludes.2.Background and Motivation2.1.Overview of LiFSIn this section I give an overview of the major features of LiFS.We describe LiFS in more detail here[1],but I wish to convey the features that best distinguish it from conventionalfile systems.LiFS contains a newfile system feature,called a relational link.These relational links express rela-tionships between any twofiles.Thus,in LiFS a regularfile may point or refer to another.Relational links are different than symbolic links which allow a user to create additional path names forfiles or di-rectories,thus becoming“linked”to additional places other than the original path.Moreover,relational linksmay contain metadata in the form of associated at-tributes.These attributes take the form of key/value pairs where on a given link,each key must be unique. LiFS also allows attributes placed onfiles directly,as is done using the extended attribute API in the Linux kernel2.6.x[9].The existence of links betweenfiles leads us to a loss of distinction betweenfiles and directories. Hence,havingfiles refer to otherfiles allowsfiles to “contain”others,a property that was previously re-served for directories.Thus,directories become,in essence,simply zero bytefiles that exist for organi-zational purposes and backwards compatibility with conventionalfile system structures.Moreover,this implies that a path to any givenfile shall occur through a series offiles,which themselves may also contain data and can be opened.LiFS additionally allows multiple links between files.This is so a single or multiple users may wish to have different sets of metadata to show separate re-lationships between the twofiles.I will present an example of this feature in section5.The caveat to this feature is that links must be uniquely identifiable through some combination of their attributes.A sim-ple identification scheme,but one not required by the file system,is to have a unique name attribute on each link.The proposed implementation of LiFS is to have all metadata forfiles,links and attributes reside in mag-netic RAM.MRAM is a new form of high speed,non-volatile RAM.It should greatly increase metadata ac-cess performance over conventional reads and writes to disk for metadata.An example related to this research where LiFS might be used is for a the working directory of a soft-ware project.Binaries may be linked to objectfiles, which in turn may be linked to the sourcefiles that generated them,or vice-versa.In addition,we can compile source code for different hardware architec-tures by following the appropriate link to the complier configured for the target architecture,where a link ex-ists to a compiler for each architecture.The result-ing object code could be linked to the source with at-tributes indicating which architecture it should runon.age for the ln2command.Figure2.Example output from the ls2com-mand.2.2.Interface to LiFSLike anyfile system with advanced features,LiFS requires a user interface to expose those features.Ap-plication programmers may use the LiFS API,but that is less valuable to an end user of thefile system.To initially make those features available we introduced the ln2and ls2command line utilities.These utili-ties allow for the utilization of LiFS’features beyond what available through conventional tools run through a shell.Ln2is an adjunct utility to the ln program. Whereas ln allows a user to create hard and soft/symbolic links,ln2enables the creation of rela-tional links in LiFS.Figure1shows the usage for this utility.The source and targetfiles must be existingfiles to be linked.In addition,the utility requires the specification of some attribute metadata for the new relational link.Ln2has other features too that are relevant to link-ing.The utility lets a user modify the attributes,on a relational link,see all the attributes,or delete a link.In such cases,the link in question must be uniquely iden-tified by a set of attributes.Queries that match more than a single return an appropriate error to inform the user of such.The functionality of ls2is meant to augment ls for LiFS relational links and attributes.When ls2lists thefiles under a given directory,it displays eachfile and all links emanating from thefiles.It displays at-tributes on the link as well.Figure2shows some files with their links.It lists the target name and attributes as comma-delimited strings in the format ”key=value”.At the top of thefigure we can see the output from ls for comparison.Additionally,ls2allows a user to query for spe-cific links returned based on a combination of at-tributes.At present,the query capability is very sim-ple.It allows only a conjunction of key/value pairs to match links.2.3.Advantages of a GUI for LiFSWhile these tools give an end user some ability to browse in LiFS,they do impose somewhat of a hindrance on the user.To achieve desired results, users may be required to perform a series of command line operations that include the commands described above.Alternatively,we may turn to a graphical user interface for LiFS to provide better usability and func-tionality.In many ways,a GUI for LiFS can be more advan-tageous than conventionalfile browsers are for con-ventionalfile systems.Conventionalfile browsers do provide views of hierarchical directory tree structures, conventional metadata,and even extended attributes onfiles.However,all those capabilities are available on a command line.Seeing multiple levels of hier-archy may require multiple operations via command line,but should be a relatively straightforward pro-cess.With LiFS,the GUI now can represent,in addition to a tree,the graph structures created by relationships between thefiles given by the addition of relational ing our text-based approaches,trying to real-ize a graph structure though variousfile lists of source nodes in a graph can become very cumbersome.How-ever,the graph visualization grants the user instant knowledge of the relationships that she is concerned with.Another advantage of using a GUI for LiFS is that it has the ability to present multiple scales of view for thefile system.This becomes more important when links allowfiles to refer to one another that may ap-pear located in disparate directories.While we can get a good local or partial view of thefile system,show-ing a limited number offiles,we obtain the addition of a more global view where there are more complex relationships present.Here is an example of on an operation using several steps over a command line.We would like to change the attribute on a link,but we are not precisely sure how to identify the link.Atfirst,we may guess and at-tempt to make the modification in one step using ln2, in which case we must provide a correct source path, target,and attributes for identifications.Trial and er-ror come in to play here.At this point,either we may be correct,or we fail to identify the link correctly or uniquely.We may try again or try to locate the link using one or more calls to ls2.If the source path is correct,we then may look through the output from ls2for the link in question.Once identified,we can correctly use ln2to make the attribute modification for that link.As we can see,it takes several operations and con-siderable human effort to complete a process that should be simple.To contrast,let us consider what is involved in using a GUI.We will have to locate the sourcefile for the link,but once in view,we should be able to see all its child links and identify the one we want.Then,we may change the existing attributes, either modifying one or adding using a modification pane,and we are complete.Shortcuts to query the GUI for the correct sourcefile or by attributes to help find the link in question even faster make this an even substantially improved process.Thus,it is the goal of LiFSBrowse is to grant the user many of the above listed advantages.The follow-ing section will describe what features of LiFSBrowse have been included to satisfy meeting that goal.3.GUI designThe LiFSBrowse GUI is designed to be able to dis-playfile relationships via links,select link metadata via attributes,and selectfile content all in one win-dow.In order to accomplish this,the main LiFS-Browse window is divided into three sections,one for plottedfile and links,one for attributes,and one for file content.Additionally,the LiFSBrowse window atop has a menu bar and below has a status bar,as is standard for most GUI applications.The pane comprising the left side of the application contains LiFSBrowse’s representation of thefiles and links from within LiFS.The GUI representsfiles by blue circles with a black outline and links by black arrows.It labels each link using the name compo-nent of the link’s targetfile path.A user may select a link by clicking on the label or the link itself.When selected,a link and its label changes color to the hi-light color,which is red by default.Having both the link and label hi-lighted together is especially helpful in identifying the selected link when the user views a file system with many links and labels plotted in tight proximity of one another.Additionally,the content in the content pane and attributes shown in the attribute pane may change when a user selects a new link.The GUI plotsfiles on the display as they are found using a depth-first search of thefile system.It plots “deeper”files,i.e.children to the right of a parentfile. Files with a“sibling”relationship are plotted top to bottom along the same vertical axis.There is a maxi-mum depth setting(default of10)that controls when to stop exploring for new links from a starting source file.As the DFS operation is called recursively on a child link,the value is decremented until it reaches0.LiFSBrowse offers the user a number of view-ing options for customizing thefile and link display. There are three general on-off options to be switched between,resulting in eight potential views.First is the structural drawing mode.This option is mainly cosmetic,affecting only the look of the output dis-play.Thefirst option for this mode are right angle links,where thefirst link from a sourcefile shall be drawn as a horizontal arrow to the right of the plotted file.All subsequentfiles are drawn down and to the right,in an”L”shaped fashion with a longer horizon-tal component,this mimicking manyfile browsers that use tress to display directory bels ap-pear directly below the horizontal component of the link they identify.The other alternative is the”fan-out”view,where the child links of a sourcefile are drawn out still to the right of thefile,but at different angles,starting close to the top of the circle for the file,working its way to the rightmost point,and to the bottom.Having both these views gives the user alter-natives,as somefile systems may be geared to appear better in a particular mode.The second option is tree versus graph view modes. Under tree mode,ALL child links of a sourcefile are drawn,until the max depth is reached.This means that targetfiles and links are drawn even if they are redundant,i.e.already drawn elsewhere in the dis-play for thefile system.In such cases,a selected link redundantly drawn shall be hi-lighted in all places that it was drawn.Additionally,any cycles created by files referring to one another are drawn out(redundant display)until the maximum depth is reached.Graph mode eliminates all such redundancy and cycles.In this mode,new childfiles are plotted as discovered in the search algorithm.However,for afile in question if one of its children has already been plotted as child of a another previously plottedfile,then we draw a link directly from the newer source to that target child.In“L”plotting mode combined with graph mode: if a case arises perhaps a link may be drawn through afile representation,LiFSBrowse draws the link as an arc.Additionally,in both plotting modes,LiFS-Browse draws arc-shaped links for situations where files lie on the same horizontal row,save for those initially discovered with a parent-child relationship. Otherwise,links are drawn as straight lines from the sourcefile to the target.Somefiles are not pro-tected by the provision for arc drawing in graph mode that exists for tree mode.Having these two different mode choices gives the user a great deal of power for viewing through a choice between focusing on source/target relationships for individualfiles,as done in tree mode,or all relationships,shown in graph mode.The third option is whether or not LiFSBrowse should automatically expand allfiles to plot their child links.Turning”expand off”forces the user to manual click onfiles that concern her to view their children. This may make more easily readablefile system dis-plays by limiting the amount of data plotted.More-over,it may often be the case that a user is only con-cerned with a limited set of links andfiles to be plotted at any one time.“Expand on”,of course,provides the convenience of having all links andfiles plotted auto-matically.Additionally,a user may modify the view by changing the size of the drawn components.Con-sequently,this feature behaves similarly to the zoom tool in many graphics application.Presently there are 5size modes to choose between,ranging from“Tiny”to“Bigger.”The chosen size affects the length and width of links,size of thefile circles,and the font size of the labels.This mode is what should be primarily responsible for providing the functionality of switch-ing between small and largefile system views.The user may add new links,modify or delete ex-isting ones through the main pane.Adding a link re-quires the user to click on the sourcefile,the target file,andfill in the attribute data(discussed later).To modify a link,the user simply must select the link she wishes to modify and change the attributes.Deletions require the user select the link to be deleted and con-firm1.At present,Link sources and targetfiles may not be modified in a single LiFSBrowse operation.If a user wishes to do so,she may delete the link and add a new link with a new desired source and target,but the same attributes as the deleted link.The attribute pane,located in upper-right quadrant of the application frame,displays attributes of the cur-rent selected link.Rows hold each attribute key/value pair,with the keys in the left-hand column and val-ues on the right.In cases of multiple links between a pair offiles,a user may discern different attribute sets for each through having the background of the at-tribute text be painted alternating colors.The attribute data rows from thefirst link have a red background followed by the rows from the second link contain a blue background,and so on,Additionally,attributes 1LiFSBrowse running over the prototype PostgreSQL backed LiFS will not delete links that result in removing the targetfile permanently.Moreover,the next version of LiFS will let you re-move thefile when thefinal link targeting it is removed(reference count reaches0),unless it contains child links of its own.Those links and all subsequent children must be removedfirst.on the targetfile of the links will have a third unique background color,set to green by default.2Furthermore,the attribute pane also incorporates the functionality for attribute entry and querying. When the user creates a new link or selects a link for modification,the pane switches from attribute display mode to attribute entry.The user may then add new attributes or modify the existing keys and/or values.A submit buttonfinalizes the user’s changes.More-over,the attribute entry view allows the user to enter queries.These queries come in a set of key/value pairs to match attributes on links in thefile system.Once submitted,the query will return a new display offiles and links in the main display pane on the left.Below the attribute pane is the content display pane.In this pane,a user may see the content of the targetfile of the currently selected link.Presently, LiFSBrowse supports plain text and some imagefiles. LiFSBrowse requires that a link targeting thefile or thefile itself be tagged with the attribute“file type=”in order to display its content.The values“text”or “image”support those particularfile types.Finally,the bottom of the LiFSBrowse application frame contains the status bar.The status bar gives var-ious messages to the user.These include the current link source and target paths,instructions to the user for a pending operation,and error operation success-ful messages.An example of an instruction is when a user selects“Add”from the“Link”menu,the status bar instructs the user to select a sourcefile.4.ImplementationI have implemented LiFSBrowse in the Python scripting language.I chose this because it is high level,interpreted and may lead to more rapid develop-ment than lower level languages such as“C”that are more appropriate for actualfile system development. Moreover,I selected to use the tkinter GUI toolkit for this implementation as it is considered the de-facto standard for user interface tasks within Python[14].The version of LiFS I used is not the one discussed above(section2.1)that will utilize MRAM,but a pro-totype to serve as a proof of concept for LiFS.This 2Attributes onfiles were not available to read from the LiFS prototype.Hence we cannot demonstrate this feature,but I look to correct it with the next version of LiFS.Figure3.The architecture of the LiFS prototype and how LiFSBrowse accesses itprototype runs with a PostgreSQL database[18]as the backing store for LiFS’metadata.The interface for standardfile system operations comes through FUSE (file systems in user space)[17].The python system libraries allow LiFSBrowse to access that functional-ity that goes through FUSE.A separate channel to the file system implementation provides additional API to LiFS calls that involve access and manipulation of relational links.This API I have made available for use in programs written in Python via SWIG wrapper code[16].One implementation challenge came through han-dling afile system work around introduced in the pro-totype version of LiFS.As allowing the use offiles and directories interchangeably breaks POSIX seman-tics,we decided to use the”@”character as an escape to force either to be a directory.Thus,in all paths,the directory names has the character appended within a path.In the implementation of LiFSBrowse,the code to handle content display uses the standardfile system library exposed through FUSE as opposed to the link-ing and attribute related functionality which use the LiFS API.In that module’s calls to thefile system,the pathnames had to include the”@”character in order to properly openfiles for display purposes.ability ExamplesFigure5shows a collection offiles with various links between thefiles.In this case,eachfile stores the image of a musical artist or group and thus rep-resents the artist or group.Thus,the links suggest relationships between each artists,with relationship categories such as influence,rivalry,etc.The one exception to relationship types of those links,we mayfind in the link colored red.The redFigure5.LiFSBrowse showing relationships betweenfiles.The user is about to add a new link.Figure4.The python modules(scriptfiles) that constitute LiFSBrowse.color shows that the link has been hi-lighted.In the upper-right corner there is a small table showing the attributes on the hi-lighted link.We can discern the re-lationship from the“description”attribute that tells us that thisfile is a biography of the parentfile of Robert Johnson.The“file key is set to text,and like-wise we see the text of thefile in the area below the attributes.The author of the text is given in the at-tribute with the key“author”.Additionally,we see a userid attribute for the link’s creator.Since LiFS can store multiple links for the same pairs offiles,it is important to distinguish be-tween whichfile system user created the link.How-ever,all examples we consider in this section will have the same user id.The status bar in the bottom of thefigure presents the user with a message.In this case,the user has selected the Add option from the Link menu in order to create a new link.Thus,the next course of action is for the user to follow those instructions and click on a sourcefile.Figure6.Resulting graph after addition of a new link.Some additional links andfiles are shown by expansionThe user has just successfully added a link,and we can see the resulting graph displayed in Figure6.The newly added link is from thefile“RollingStones.gif”to“ledzep.gif”,and is hi-lighted.We may notice that layout of the graph has changed since the lastfigure. While this may appear disconcerting to the user,it can be beneficial because the new layout may better ar-range thefiles and links for the new graph configura-tion than the previous layout.Moreover,we should notice that the font,file and link sizes have all grown. This is because our user must have changed the view size mode for LiFSBrowse to a larger size.An addi-tional change to the display is apparent in the status bar,which now displays the source and destination files of the hi-lighted link.The hi-lighted link in thisfigure has different meta-data describing the relationship between the twofiles than shown in the previously considered view.This link suggests a relationship of influence between the two bands,and we may see that the level of influence is“moderate”In addition,we are given a sense that the bands may overlap in their years active,given the attribute for“time=overlap”Finally,we see that the file type is that of an image in this case,and the image (band photo)is displayed instead of text.Thefile system graph plot in Figure6also contains additionalfiles and links that were not present in the previous view.Thesefiles and links are for releases (albums or compilations)and songs for Led Zeppelin. In this case there are two releases which between the two of them point to a total of six songfiles.Where the releasefiles point to the same song shows that that song appears in both release.Since the track number for that song may vary between release,an attribute given that information can be found on the link.Figure7.Panel to input a query to LiFS-Browse.A similar panel is used for attributeentry and modificationSuppose we wish to perform a query in LiFS-Browse,that is,create a display offiles and links based on a search traversing links that match some key/value pair input.Figure7is the panel display for inputing attributes to form our queries.In our case, the user has entered a key of“influence”and the value “strong into the query box.Additionally,this display doubles in use for entering attributes when creating or modifying links.Figure8shows the results of the user’s query.The number of links between thefiles has been paired down to only those that denote a relationship of strong influence.The user has also set the view size to“Big-ger”:the largest size available in LiFSBrowse.The user has selected a link pointing to afile for Chuck Berry,and this brings us to an interesting change in the attribute display area.There are now two sets of attributes,each with separate colors.Two of attributes means that the hi-lighted link represents two links in the underlying linkingfile system.In this case the user query has resulted in both links dis-played because they have the query attribute in com-mon.However,aside from“userid”,the other at-tributes differ between the two links.Thefirst has more information about the artist.The second seems to convey that this link’s purpose is to convey the re-lationship between the twofiles.Figure9shows much of the samplefile system in “Tiny”size.This mode gives a more complete picture of what elements comprise thefile system because more links andfiles can be plotted in the window.. Hence,we see manyfiles starting with thefile system root shown with a“/”to the“leaf”files that appear within the display and on the right edge of the graph.Thefigure also show what tree mode of the browser looks like.In this view there are manyfiles and links that are redundantly plotted.For example,examine the series of links that start with“robertjohnson.gif”on the left and end with“ledzep.gif”following each horizontally.That series denotes the chronological succession of influence.Additionally,we notice that thefiles along that chain of links have the child link for“ledzep.gif”.Each of thosefiles has the same set of decedent links andfiles,all of which are re-dundant.The redundancy is further exemplified by the hi-lighted link.In this case it is for the link to “houses.gif”.Each set of redundant links andfiles has the same link hi-lighted.This makes it easy for a user of LiFSBrowse to identify redundant informa-tion when using tree views.6.Related WorkMcGuffin,et al.take an interesting approach to file system visualization[10].Their system,Expand-Ahead placesfiles and folders within folders to ex-press containment relationships.Files may be listed by name or content may be displayed within.The system also features zoom in,auto drill-down,and will automatically expand various folders to size in order to best display as much data on screen as possi-ble.LiFSBrowse,likewise attempts to show a user an overview of relationships within thefile system and allows the user to zoom in on particulars.How-ever,Expand-Ahead appears to not handle the non-tree edges that may be found through LiFS relational links without redundancy.In scientific network visualization,CiteSpace fo-cuses on identifying and tracking thematic trends.It features not onlyfinding highly cited clusters,but also considers the trails that are pivotal points in transitions within a knowledge domain,perhaps a paradigm shift. Its visualization features graph display of citation and term links between documents,with additional rings on notes to mark highly cited documents,color to de-note“pivotal”points,and age of the link.LiFSBrowse。

相关文档
最新文档