Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 7

0
votes
answers
58 views
+10

PHP - 在Apache中

0
使用mod_rewrite

我有以下網址:PHP - 在Apache中

http://example.com/pages/page.php?company_name=Name

我想實現的是有這樣一個URL:

http://example.com/pages/Name

我已經嘗試了不同的規則但不起作用:

RewriteRule ^pages/([A-Za-z0-9-]+)/?$ /pages/page.php?company_name=$1 [NC] or 

RewriteRule ^pages/([^/]*).php$ /pages/page.php?company_name=$1 [L] 

它不起作用。它給了我一個「未找到」頁面。我該如何正確使用mod_rewrite?

沙发
0
0

嘗試了這一點:

RewriteRule ^pages/([0-9a-zA-Z-_]*)(/|)$ /pages/page.php?company_name=$1 [QSA,L] 

這會關心或不關心,如果該URL的末尾有斜槓:

http://example.com/pages/Name 
http://example.com/pages/Name/ 

,也將包括任何額外AGRS(QSA)如果頁面調用因爲它:

http://example.com/pages/Name/?more=stuff 

這應該工作,如果你的Apache有mod_rewrite和PHP存在你已經顯示。

UPDATE

如果你有一個不同的URL,它需要一個不同的PHP,例如 '藍頁':

http://example.com/bluepages/Name 

那麼這會工作爲:

RewriteRule ^bluepages/([0-9a-zA-Z-_]*)(/|)$ /bluepages/somescript.php?some_var=$1 [QSA,L] 

如果您有多個你想要控制的這個,你可以在你的htaccess中爲每一個創建多個RewriteRules。但是,如果你只是想通配符話,那麼這將做一個盲目的包羅萬象(並導致大量的錯誤報告在Apache日誌):

RewriteRule ^([0-9a-zA-Z]*)/([0-9a-zA-Z-_]*)(/|)$ /$1/page.php?some_var=$2 [QSA,L] 

你要麼必須是具體的,或者只是改變了一切。有很多方法可以配合使用,而且這取決於你的意圖。

+0

我試過上面的選項,但它仍然不起作用,仍然給我「未找到 在這臺服務器上沒有找到請求的URL /bluepages/Name.php我想知道文件夾結構的問題?因爲我有root/pages文件夾,我的.htaccess文件和剩餘的php文件位於這裏。謝謝 –

+0

以上內容適用於你提供的例子,如果你所做的不是你提供的內容,那麼我的答案將不起作用。提及現在的藍圖和根/頁面......所有這些東西都會起作用,應該已經添加到您的原始問題中 – IncredibleHat

+0

感謝您的更新,它現在可以工作了。根據您提供的內容,我會嘗試一些選項/場景並查看它給出的結果。再次感謝! –

0
votes
answers
43 views
+10

如何確定在OSX上偵聽什麼進程

0

試圖幫助在運行El Capitan的Mac上配置Laravel代客,並且用戶以前安裝了MAMPMAMP已被禁用,但無論何時我們加載代客地址(mysite.dev),我們都會收到標準的Apache 404頁面。如何確定在OSX上偵聽什麼進程

有沒有辦法確定什麼進程在端口80上偵聽,並與代客衝突,所以我可以禁用它?

+0

你可以希望適應這一個https://stackoverflow.com/a/24388281/2836621 –

沙发
0
0

Who is listening on a given TCP port on Mac OS X?

lsof -n -i4TCP:80 | grep LISTEN 

或類似。

0
votes
answers
46 views
+10

駱駝 - 如何移動碼頭集裝箱外的文件

0

我有一個容器內的彈簧啓動應用程序,我用駱駝來讀取一些文件,但我需要告訴駱駝開始讀取容器外,然後將相同的文件移動到一個這也是在容器外具體路徑,有人可以幫我?駱駝 - 如何移動碼頭集裝箱外的文件

這是我的代碼:

@Component 
public class Controlador extends RouteBuilder { 

    @Autowired 
    Procesador objProcesador; 

    @Override 
    public void configure() throws Exception { 
     from("ftp://[email protected]:port?password=password&passiveMode=true&delete=true").streamCaching().convertBodyTo(InputStream.class).process(objProcesador).to("/var/lib"); 
    } 

} 

在此先感謝

+0

使用[移動](http://camel.apache.org/file2.html)URI選項而不是刪除。 https://stackoverflow.com/questions/19905462/how-to-rename-and-move-the-file-on-ftp-once-processed-by-camel – Bedla

+0

是的,這將移動該文件,但我怎麼能指定一個在容器外面的路徑? –

+0

不確定你對「容器外」意味着什麼。如果這意味着在遠程FTP服務器上移動文件,那麼從camel-file2組件繼承的「move」選項應該可以工作 – Bedla

沙发
0
1

你怎麼在容器外的意思是?如果您的意思是運行容器的主機上的路徑,則需要將該路徑作爲卷共享。在使用"docker run.."時或在Dockerfile中設置音量。如果您的意思是駱駝應該通過ftp或sftp獲取文件,請確保容器可以先訪問該站點。

+0

是的,我需要一個來自主機的文件,但是有可能在兩個不同的路徑之間讀取和移動文件?因爲我需要從/ mnt /文件讀取文件,但後來將文件移動到主機上的另一個位置例如/ var/lib/files –

+0

是的。這兩個路徑必須被模仿爲[卷](https://docs.docker.com/engine/admin/volumes/volumes/#create-and-manage-volumes),以便容器可以訪問它。然後,您可以使用具有相對或絕對路徑的&移動選項來安裝音量。 – Bedla

+0

主機上需要的任何路徑都需要作爲卷裝入,以便容器到達它。 –

0
votes
answers
58 views
+10

執行者上的Spark對象(單例)序列化

1

我不確定我想實現的是否可能。我所知道的是,我正從一個執行器訪問單例對象,以確保它的構造器在每個執行器上只被調用一次。這種模式已經在我的代碼庫中被證明和按照預期用於類似的用例。執行者上的Spark對象(單例)序列化

但是,我想知道的是,如果我可以在驅動程序初始化之後運送對象。在這種情況下, 訪問ExecutorAccessedObject.y時,理想情況下它不會調用println,而是返回值。這是一個高度簡化的版本,實際上,我想打電話給驅動程序上的某個外部系統,因此在執行程序上訪問時,它不會重新調用該外部系統。我確信@transient lazy val x在執行者上被重新初始化,因爲這將持有無法序列化的連接池。

object ExecutorAccessedObject extends Serializable { 
    @transient lazy val x: Int = { 
    println("Ok with initialzing this on the executor. I.E. database connection pool") 
    1 
    } 

    val y: Int = { 
    // call some external system to return a value. 
    // I do not want to call the external system from the executor 
    println(
     """ 
     |Idealy, this would not be printed on the executor. 
     |return value 1 without re initializing 
     """) 
    1 
    } 
    println("The constructor will be initialized Once on each executor") 
} 


someRdd.mapPartitions { part => 
    ExecutorAccessedObject 
    ExecutorAccessedObject.x // first time accessed should re-evaluate 
    ExecutorAccessedObject.y // idealy, never re-evaluate and return 1 
    part 
} 

我試圖用廣播變量解決這個問題,但我不確定如何訪問單例對象內的廣播變量。

沙发
0
2

我想知道的是,如果我可以在驅動程序初始化之後裝運對象。

你不能。作爲單身人士,我們絕不會將其運送給執行人。在本地初始化時,只要第一次訪問對象。

如果調用的結果是可序列化的,只需將其作爲參數傳遞給ExecutorAccessedObject(隱式或顯式地)或使ExecutorAccessedObject可變(並添加所需的同步)即可。

+0

謝謝你的回答。當你說明確地將參數傳遞給對象時,你的意思是使它成爲一個帶有參數的類? –

+0

我寧願考慮參數化方法調用。使用類而不是對象應該也可以。 – user8925690

0
votes
answers
42 views
+10

重寫規則的htaccess的犯規工作和錯誤500顯示

0

我想重寫規則我的網址是這樣的:重寫規則的htaccess的犯規工作和錯誤500顯示

https://mywebsite.com/dev/index.php?controller=pages&action=inscription

https://mywebsite.com/dev/inscription

對於此刻我的htaccess的文件包含此說明:

RewriteEngine On 
RewriteRule ^([^/]*)/([^/]*)$ /dev/index.php?controller=$1&action=$2 [L] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /dev/index.php?controller=$1&action=$2&id=$3 [L] 

的2個RewritRules此URLS的工作原理:

/dev/index.php?controller=sport&action=accueil --->/dev/sport/accueil /dev/index.php?controller=sport&action=produit&id=1 --->/dev/sport/produit/1

這裏的特異性是在那些對值的所有控制器指定, 「網頁」,一個RewriteUrl像這樣,但讓我錯誤500:

RewriteRule ^([^/]*)$ /dev/index.php?controller=pages&action=$1 [L] 

非常感謝您的幫助,如果您需要更多的細節,請留下評論。

沙发
0
0

這條規則似乎是這個問題:

RewriteRule ^([^/]*)$ /dev/index.php?controller=pages&action=$1 [L] 

這是導致無限循環,因爲圖案[^/]*是匹配重寫的URI /index.php爲好。

插入略低於RewriteEngine On線這條規則跳過所有文件&目錄:

RewriteEngine On 

# skip all files and directories from rewrite rules below 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

# all your rewrite rules go below this 

還要注意的是,如果你的.htaccess裏面/dev/目錄,那麼你可以在目標如使用index.php代替/dev/index.php

RewriteRule ^([^/]*)$ index.php?controller=pages&action=$1 [L,QSA] 
+0

這工作正常嗎? – anubhava

0
votes
answers
37 views
+10

當從PubSub讀取數據流作業並寫入Google Cloud Storage時數據丟失

0

將固定數量的字符串(用於測試的800,000個1KB)放入PubSub主題並在以下版本中運行以下Apache Beam(2.1.0)作業數據流,正好一次保留語義,如預期。當從PubSub讀取數據流作業並寫入Google Cloud Storage時數據丟失

import org.apache.beam.sdk.Pipeline; 
import org.apache.beam.sdk.io.TextIO; 
import org.apache.beam.sdk.io.gcp.pubsub.PubsubIO; 
import org.apache.beam.sdk.options.PipelineOptionsFactory; 
import org.apache.beam.sdk.transforms.windowing.FixedWindows; 
import org.apache.beam.sdk.transforms.windowing.Window; 
import org.joda.time.Duration; 

public class PubSubToGsSimpleJob { 

    public static void main(String[] args) { 
     PubSubToGsPipelineOptions options = PipelineOptionsFactory.fromArgs(args).withValidation() 
       .as(PubSubToGsPipelineOptions.class); 
     Pipeline p = Pipeline.create(options); 

     p.apply(PubsubIO.readStrings().fromSubscription(options.getInput())) 
       .apply(Window.into(FixedWindows.of(Duration.standardMinutes(1)))) 
       .apply(TextIO.write().withWindowedWrites().withNumShards(1).to(options.getOutput())); 
     p.run(); 
    } 

} 

PipelineOptions以下實施

import org.apache.beam.sdk.options.Description; 
import org.apache.beam.sdk.options.PipelineOptions; 

public interface PubSubToGsPipelineOptions extends PipelineOptions { 
    @Description("PubSub subscription") 
    String getInput(); 
    void setInput(String input); 

    @Description("Google Cloud Storage output path") 
    String getOutput(); 
    void setOutput(String output); 
} 

但是,如果同樣的工作運行時,所有的元素之前倒掉讀取(如數據流控制檯中顯示),並再次拉開序幕,輸出文件與發佈到PubSub主題中的原始數據集相比,記錄數少。這意味着排除和替換作業可能會導致數據丟失,這似乎很奇怪,因爲this google cloud blog post提到Drain and replace應該至少有一次語義。如何設計這條管道,以便在排乾和更換作業時至少實現一次語義(或者更好但恰好一次語義)?

沙发
0
0

我的猜測是,一個窗口可能會部分寫入之前,排水和替換工作用其餘的窗口覆蓋它。您可以檢查這個日誌行in WriteFiles的排水作業和替換作業中的工人日誌。如果您使用Beam HEAD,它還會在最終目的地被覆蓋時進行記錄。

從概念上消耗的作業和替換作業是完全不同的管道。使用相同的輸出位置與其他兩個不相關的作業使用相同的輸出位置沒有區別。您可以嘗試的另一件事是爲第二個作業使用不同的輸出路徑,並驗證所有記錄都存在於兩個目錄中。

+0

這就是說,可能是TextIO可以/應該更好地處理這種情況(如果上面的猜測是正確的)。請確認更改輸出路徑是否保留所有記錄。這將確認Dataflow的保證。 –

+0

我找不到匹配日誌模式的行。配置替換作業以寫入單獨的輸出至少產生一次語義。有一些重複的記錄意味着一次只使用PubSub作爲源的語義不被維護。 該博客文章還提到'如果您的自定義源擔保恰好一次交付,並提供源側的緩衝,排水和更換可以提供恰好一次semantics.'因爲PubSub的消息可以用一個ACK響應之前進行緩衝,這是否建議PubSub只能提供一次語義? – JonSim

+0

感謝您確認工作。我將爲TextIO提交一個錯誤。我很驚訝你看到重複。在這種情況下,PubSub應該提供完全一次的語義。如果你可以提供更多信息(和job_id id,你可以),這將是非常有用的。我當然有興趣挖掘更多的重複來源。 –

0
votes
answers
24 views
+10

apache flink可以用來加入巨大的非實時數據嗎?

0

Guy我應該通過一些公用密鑰(我們正在談論多個REST服務調用的多個sql表)與一些REST服務的json加入一些巨大的SQL表。事情是這個數據不是實時/無限流,也不認爲我可以通過連接列來排序REST服務的輸出。現在,愚蠢的做法是將所有數據和行匹配起來,但這意味着將所有內容都存儲在內存/卡桑德拉或Redis等存儲中。但是,我想知道flink是否可以使用流窗口的某個王加入說X元素(所以真的只是在RAM中存儲這些元素在一個點),但也存儲不匹配的元素爲以後的匹配,也許某種的哈希映射。這就是我所說的聰明加入。apache flink可以用來加入巨大的非實時數據嗎?

王認爲

沙发
0
1

魔鬼在細節,但肯定的,原則上這類數據富集與弗林克相當可行的。您的要求不完全清楚,但我可以提供一些指示。

對於初學者,您需要熟悉Flink的managed state接口。使用這些接口將確保您的應用程序具有容錯性,可升級性,可重新啓動性等。

如果您想簡單地預加載一些數據,那麼您可以使用RichFlatmap並在open()方法中加載數據。在你的情況下,CoProcessFunction可能更合適。這是一個帶有兩個輸入端的流操作符,它們可以保持狀態,並且可以訪問定時器(可以用來使不再需要的狀態到期,並在等待無序數據到達後發出結果)。

Flink也支持asynchronous i/o,這可以使外部服務更高效地工作。

也可以考慮通過將REST服務調用打包爲user-defined functions來與Flink的更高級別SQL and Table APIs接近。

0
votes
answers
36 views
+10

如何從火花數據幀的所有列中替換多個字符?

1

我有一個包含多個列的數據框。如何從火花數據幀的所有列中替換多個字符?

>>> df.take(1) 
[Row(A=u'{dt:dt=string, content=Prod}', B=u'{dt:dt=string, content=Staging}')] 

我想從df列A和B的值中去掉花括號'{'和'}'。我知道我們可以使用:

df.withColumn('A',regexp_replace('A','//{','')) 
df.withColumn('A',regexp_replace('A','//}','')) 
df.withColumn('B',regexp_replace('B','//}','')) 

如何爲Spark數據框的所有列動態替換字符? (熊貓版本如下所示)

df = df.replace({'{':'','}':''},regex=True) 
沙发
0
2

只要使用正確的正則表達式:

df.withColumn("A", regexp_replace("A", "[{}]", "")) 
+1

我們如何應用上述語句多列一下子?假設我的數據框中有10列。 – Sivaraman

0
votes
answers
30 views
+10

訪問API時獲取404

0

我正在設置節點js項目來訪問API。訪問API時獲取404

目錄樹視圖

└── html 
    └── perb 
     ├── bin 
     ├── models 
     ├── node_modules 

項目樹狀視圖

enter image description here

但最終得到了404 但是,當我試圖通過本地主機訪問,這是工作的罰款。

本地主機地址:本地主機:3000 /教練/ logintrainer

服務器地址: IP_ADDRESS/PERB /教練/ logintrainer

于斌/ WWW文件

監聽端口是3000

var port = normalizePort(process.env.PORT || '3000'); 
app.set('port', port); 

但我試圖將其更改爲80和8080也沒有幫助。

我使用的Apache2服務器,並設置爲(https://www.1and1.com/cloud-community/learn/application/misc/set-up-a-nodejs-app-for-a-website-with-apache-on-ubuntu-1604/

任何幫助將得到高度讚賞。

+0

檢查服務器日誌。確保你真的打你的應用程序,因爲你可能不是。 Apache httpd需要知道如何重定向到您的Node應用程序的端口。你可能想要使用像[Passenger](https://www.phusionpassenger.com)這樣的工具來爲你做這件事。這是處理端口映射和進程管理的Apache'httpd'的附加組件。 – tadman

+0

當我檢查pm2日誌時,它沒有打到服務器。 @tadman –

+0

當你說你在「ip_address」擊中它時,你的意思是127.0.0.1還是別的?如果它是192.東西,你可能正在閱讀另一個教程,假設你有另一個代理設置,你沒有 – Asthmatic

沙发
0
1

在您在教程中設置了文件,您可以設置代理的IP指向你想打的不是本地主機

<Location /nodejs> 
    ProxyPass http://127.0.0.1:8080 
    ProxyPassReverse http://127.0.0.1:8080 
</Location> 
+0

所以我需要將127.0.0.1:8080更改爲常規IP地址,即.34。什麼? –

+0

是的,它不知道在IP上聽你試圖打它,因爲你從來沒有告訴它在那裏聽 – Asthmatic

+0

Nops它不工作。 –

0
votes
answers
37 views
+10

ipython不被識別爲內部或外部命令(pyspark)

1

我已經安裝了spark版本:spark-2.2.0-bin-hadoop2.7ipython不被識別爲內部或外部命令(pyspark)

我使用Windows 10 OS

我的Java版本1.8.0_144

我已經把我的環境變量:

SPARK_HOME D:spark-2.2.0-bin-hadoop2.7 

HADOOP_HOME D:Hadoop (where I put binwinutils.exe) 

PYSPARK_DRIVER_PYTHON ipython 

PYSPARK_DRIVER_PYTHON_OPTS notebook 

Path是D:spark-2.2.0-bin-hadoop2.7in

當我啓動pyspark從命令行我有這個錯誤:

ipython is not recognized as an internal or external command 

我也試過在jupyter中設置PYSPARK_DRIVER_PYTHON,但是它給了我同樣的錯誤(未被識別爲內部或外部命令)。

請幫忙嗎?

+0

您確定在您的機器中安裝了'jupyter'和'ipython'? – desertnaut

沙发
0
0

在你的機器上搜索ipython應用程序,在我的情況下它是在「c: Anaconda3 Scripts」中。然後只需將該路徑添加到PATH環境變量